2010-04-06 2 views
3

배열은 다음과 같이 시작 : 키 내 테이블 컬럼의 제목으로 사용되는다시 정렬 배열

Array ( 
    [SMART Board] => Array ([0] => sb1 [1] => sb2 [2] => sb3) 
    [Projector] => Array ([0] => pr1 [1] => pr2 [2] => pr3) 
    [Speakers] => Array ([0] => sp1 [1] => sp2 [2] => sp3) 
    [Splitter] => Array ([0] => spl1 [1] => spl2 [2] => spl3) 
    [Wireless Slate] => Array ([0] => ws1 [1] => ws2 [2] => ws3) 
) 

. 그들의 개별 배열은 열 정보를 전달합니다.

내가 2 개 배열로 꽤보고 array_slicearray_merge_recursive으로 더욱를 분할 한

- 1 열 이름이 같은 다른 외모 원하는 분야 그러나

Array ( 
    [0] => sb1 
    [1] => sb2 
    [2] => sb3 
    [3] => pr1 
    [4] => pr2 
    [5] => pr3 
    [6] => sp1 
    [7] => sp2 
    [8] => sp3 
    [9] => spl1 
    [10] => spl2 
    [11] => spl3 
    [12] => ws1 
    [13] => ws2 
    [14] => ws3 
) 

를 할 때 테이블 I를 작성하려고 키 열 0, 1, 2를 열 데이터로 가져온 다음 3, 4, 5 행 나누기 등의 행 나누기 ...

0, 3, 6, 9, 12 행이 필요합니다. 1, 4, 7, 10, 13 행 나누기 등을 중단하십시오.

배열을 사용하거나 데이터가 테이블로 들어가는 방법을 다시 써서 올바른 정보가 적절한 열과 정렬되게하십시오.

foreach(unserialize($dl->data) as $data){ 

    //first 3 are specialinstructions, system, and room 
    $uniques = array_slice($data,0,3); 

    $rows = array_slice($data,3); 
    $rows2 = array_merge_recursive($rows2, $rows); 

    //get the specialinstructions, system, and room 
    foreach($uniques as $unique){ 
     echo $unique."<br/>"; 
    }///foreach uniques 

    echo "<br>"; 

}///foreach unserialized 

$numberofrooms = count($rows2[key($rows2)]); 
$numberofproducts = count($rows2); 
print_r($rows2); 

unset($rows); 

//write the individual rows 
foreach($rows2 as $header=>$rowset){ 

    $headers[] = $header; 

    foreach($rowset as $row){ 

     $rows[] = $row; 

    }//foreach rowset 

}//foreach rows2 

echo "<p>"; 
print_r($rows); 

echo '<table class="data-table"> 
      <caption>DL</caption> 

      <thead><tr>'; 
foreach($headers as $header){ 
    echo "<th>".$header."</th>"; 
} 
echo '</tr></thead>'; 
echo '<tbody>'; 
$i = 0; 
foreach($rows as $row){ 
    if($i == 3 || $i == 0){ 
     echo "<tr>"; 
     $i = 1; 
    } 
    echo '<td>'.$row.'</td>'; 
    if($i == 2){ 
     echo "</tr>"; 
    } 
    $i++; 
} 
echo '</tbody></table>'; 
+0

힌트 : HTML을 '에코'하지 않으면 코드의 구조를 파악하는 것이 훨씬 쉽습니다. 다음과 같이하면됩니다. 예 : ' –

+0

고마워 펠릭스, 나는 보통 그걸로 간다. 그러나 이것은 함수에 싸서 내가 출력하고있는 것을 정확히 볼 수있는 것이 더 깨끗하다고 ​​느낍니다. – bradenkeith

답변

1

당신은 당신이 원하는 방식으로 표시하기 위해 원래의 배열에 다음과 같은 코드를 사용할 수

$i=0; 
while($i<3){ // 3 is the number of items in each array 
    foreach($originalArray as $arr){ 
     print($arr[$i].'<br/>'); 
    } 
    print('<hr/>'); 
    $i++; 
} 

테스트되지 않음을하지만 당신은 드리프트를 얻어야한다.

+0

완벽한! 내 대본과 빙고에 맞게 약간의 수정, 우승자가 있습니다. 고마워요. "; \t \t $ j = 0; \t \t 동안의 ($ J <$ numberofproducts) { \t \t \t 에코 "". $ 행 [$ numberofrooms * $의 J + $ I]. ' '; \t \t \t $ j ++; \t \t} \t $ i ++; } ?> (코멘트에서 PHP 코드를 수행하는 방법을 모르겠다.) – bradenkeith

+2

위와 같은 유용한 정보를 발견했다면 위쪽 화살표를 클릭해야합니다. 일단 할 것이다;) – zaf

+0

내가 15 명의 대표를 아직 품지 않는 것에 따라 나는 할 수 없다. .. 나는 시험했다 :/ – bradenkeith