2013-03-26 5 views
1

다음은 DB에서 값을 저장하는 배열입니다 :PHP에서 FOR 루프를 사용하여 2 차원 배열을 만드는 방법은 무엇입니까?

$dataTitle[0] = "TIR"; 
$dataTitle[1] = "OIL"; 
$dataTitle[2] = "SPK"; 

$dataDesc[0] = "Tires"; 
$dataDesc[1] = "Oil"; 
$dataDesc[2] = "Spark Plugs"; 

$dataValue[0] = "100"; 
$dataValue[1] = "10"; 
$dataValue[2] = "4"; 

내가 수동으로 2 차원 배열에 데이터를 삽입하려면 다음을 사용할 수 있습니다하지만 난으로 100 개 이상의 행 기록이있는 경우는 목적을 제공하지 않습니다 삽입. 그래서 FOR 루프가 아래에 필요합니다.

$ResultView = array(array($dataTitle[0], $dataDesc[0], $dataValue[0]), 
       array($dataTitle[1], $dataDesc[1], $dataValue[1]), 
        array($dataTitle[2], $dataDesc[2], $dataValue[2]) 
       ); 

다음 FOR LOOP를 사용하는 경우 2D 배열은 마지막 행 레코드 만 저장하고 1 및 2 행 레코드를 생략했습니다.

for ($i=0; $i<=2; $i++) { 
      $ResultView = array(array($dataTitle[$i], $dataDesc[$i], $dataValue[$i]) 
       ); 
    } 

본인은 위의 루프, 내가 3 ROW 누락 된 1, 2 행의 결과에 대한 출력 값을 얻기 위해 아래 출력 스크립트를 실행하면. 도와주세요!

for ($row=0; $row<=2; $row++) { 

    for ($col=0; $col<=2; $col++) { 

     echo $ResultView[$row][$col]."&nbsp | "; 
    } 

    echo '<br />'; 
} 

그러나 위의 경우 루프 대신 FOR 루프를 사용합니다. 방법?

실제 출력은 다음과 같습니다

Row 1 => TIR | Tires | 100 
Row 2 => OIL | Oil | 10 
Row 3 => SPK | Spark Plugs | 4 

제발 조언.

+1

데이터에 어떤 패턴도 없습니다. 예 : 데이터 소스가 있습니까? 데이터베이스 등 ...? – luiges90

+0

DB 데이터의 예입니다. 출력은 Row1 => TIR | 타이어 | 100 Row2 => 오일 | 오일 | 10 Row3 => SPK | 스파크 플러그 | 4 – Ray

+0

array_push()를 사용하려고 시도하십시오. – ripa

답변

0

데이터가 데이터베이스에서 인 경우 : 당신은 DB의 결과 행이 다시 배열로 올 경우에 당신이 결과를 통해 단지 루프 수 있어야한다 while 루프

$products  = array(); 
/* data from first table*/ 
while($dataTitle = mysql_fetch_assoc($sql)){ 
    $products[] = $dataTitle; 
} 

/* data from second table*/ 
while($dataDesc = mysql_fetch_assoc($sql)){ 
    $products[] = $dataDesc; 
} 

/* data from third table*/ 
while($dataValue = mysql_fetch_assoc($sql)){ 
    $products[] = $dataValue; 
} 

echo "<pre>"; 
print_r($products); 
+0

안녕 Prasanth, 만약 내가 DB에서 배열에 저장된 데이터가 내 질문에 언급했다.그리고 for 루프를 사용하여 2D 배열에 데이터 값 배열을 삽입하고 싶습니까? 그게 가능합니까 – Ray

+0

@ user1109161 : 2D 배열을 사용하지 않고 어떻게 $ data [0] (TIR, OIL, SPK)에 대해 3 가지 다른 값을 저장하고 있는지 이해할 수 없습니다. –

+0

질문을 업데이트했습니다. 죄송합니다 ... – Ray

0

를 사용하여 제품의 배열에 밀어 수 있습니다 .

// assuming $results contains your DB response 
$products = array(); 
for ($i = 0; $i < count($results); $i++) { 
    $products[] = $results[$i]; // or whatever method you use to fetch a row 
} 

DB 결과는 아마 다차원 배열처럼 사용될 수 있습니다.

+0

이 작업은'$ result.length'??? –

+0

1 차원 배열에 대해서만 아닌가요? 잘못하면 나를 바로 잡으십시오. DB에서 데이터 값을 처음으로 단일 배열에 저장 한 위치를 더 명확히하기 위해 질문을 업데이트했습니다. – Ray

+0

당신은 맞아요. 최근 JS 너무 많아요. :) ($ 결과) 계산에 변경되었지만 올바른 방법을 사용하여 실제 결과의 개수를 계산해야한다는 면책 조항이 있어야합니다. 우리는 그들이 어디서 왔는지, 어떤 포맷인지 알지 못합니다. – samjm

0
**Method-1** Raw method to generate the 2 diamentional array 
This is your Array 

$products = array(array('TIR', 'Tires', 100), 
array('OIL', 'Oil', 10), 
array('SPK', 'Spark Plugs', 4), 
array('SPK', 'Spark Plugs', 4)); 

$cnt=0; 
$cnt=count($products); 
$product=array(); 

// 배열 구조를 기반으로

for($i=0;$i<$cnt;$i++){ 
for($j=0;$j<3;$j++){ 
$product[$i][$j]= $products[$i][$j]; 
} 
} 


If you are getting data from data base 

for($i=0;$i<mysql_num_rows($result);$i++){ 
$products[]=result [$i]; 
} 
+0

안녕하세요 shivaP, 해명 해줘서 고마워. 하지만 위의 배열에 데이터 구조 저장소를 사용하여 2D 배열을 만들고 싶습니다. – Ray

0

는이

$data[0] = "TIR"; 
$data[1] = "Tires"; 
$data[2] = "100"; 

$data1[0] = "OIL"; 
$data1[1] = "Oil"; 
$data1[2] = "10"; 

$data2[0] = "SPK"; 
$data2[1] = "Spark Plugs"; 
$data2[2] = "4"; 

$resultCount = 3; // adjust this value for the number of results you have 
$products = array(); 

for ($i = 0; $i < $resultCount; $i++) { 
    $products[] = ${'data' . ($i ? $i : '')}; 
} 

print_r($products); 
5

for ($i=0; $i<=2; $i++) { 
     $ResultView[] = array(array($dataTitle[$i], $dataDesc[$i], $dataValue[$i]) 
      ); 
     } 
+0

안녕하세요, 답장을 보내 주셔서 감사합니다. 나는 똑같은 것을 복사했지만 출력을하려고 할 때. 올바른 결과를 표시하지 않습니다. 출력 "예를 들어 echo $ ResultView [0]; echo '
'; echo $ ResultView [1]; – Ray

+0

조차도"echo $ ResultView [0] [1];을 시도했습니다. 에코 '
'; echo $ ResultView [1] [1]; "출력 값이 나에게 표시되지 않습니다 이상한! – Ray

+0

원하는 값을 echo $ ResultView [0]; –

1

이을 사용할 수 있습니다 $ 제품 배열에 데이터를 복사하고 최종 솔루션입니다

$dataTitle = array('TIR','OIL','SPK'); 
    $dataDesc=array('Tires','Oil','Spark Plugs'); 
$dataValue=array('100','10','4'); 
for ($i=0; $i<=2; $i++) { 
$ResultView[] = array(array($dataTitle[$i], $dataDesc[$i], $dataValue[$i])); 
} 
    for ($row=0; $row<=2; $row++) 
    { 
     for ($col=0; $col<=2; $col++) 
     { 
       echo $ResultView[$row][0][$col]." | "; 
      } 
    echo '<br />'; } 
+0

답을 더 잘 편집하고, 두 개의 비슷한 대답을 넣지 마십시오. –

+0

이 메시지는 다릅니다 .... check echo $ ResultView [$ row] [0 (0) [0] [0] ] [$ col]. " | "; –

관련 문제