2016-03-15 110 views
0

我有如下多維數組,其中cid作爲選項並且值被定義爲其屬性。這種陣列基於O1,O2,O3等的選擇而生成。如何在動態多維數組中生成矩陣php

Array 
(
    [0] => Array 
    (
     [cid] => O1 
     [values] => Array 
      (
       [0] => O1A1 
       [1] => O1A2 
      ) 
    ) 

    [1] => Array 
    (
     [cid] => O2 
     [values] => Array 
      (
       [0] => O2A1 
       [1] => O2A2 
       [2] => O2A3 
      ) 
    ) 

) 

現在我需要生成HTML表格的矩陣如下:

 +--------+------------+-----------------------------+ 
     | O1 |  O2  | Some other columns   | 
     +--------+------------+-----------------------------+ 
     | O1A1 | O2A1 | Some other column values | 
     | O1A1 | O2A2 | Some other column values | 
     | O1A1 | O2A3 | Some other column values | 
     | O1A2 | O2A1 | Some other column values | 
     | O1A2 | O2A2 | Some other column values | 
     | O1A2 | O2A3 | Some other column values | 
     +--------+------------+-----------------------------+ 

總共有6行(創建像2 X 3(選項O1和O2的值))。我已經嘗試嵌套for..loop但數組有動態值(它是基於選擇)。

在此先感謝您的幫助。

回答

0

下面是解:)

<?php 
    $input = array(0 => array('cid' => 'O1', 'values' => array (0 => 'O1A1',1 => 'O1A2')), 1 => array('cid' => 'O2', 'values' => array (0 => 'O2A1', 1 => 'O2A2', 2=>'O2A3'))); 

    echo "<pre>"; print_r($input); 

    ///make an array of matrix 

    $matrixArr =array(); 

    for($i= 0; $i< 2; $i++) 
    { 
     for($j=0; $j <3; $j++) 
     { 
      $matrixArr[$input[0]['values'][$i]][]= $input[1]['values'][$j]; 
     } 
    } 
    echo "<pre>"; print_r($matrixArr); 

    ///now print that array 

    foreach($matrixArr as $key =>$val) 
    { 
     foreach($val as $v) 
     { 
      echo $key." | ".$v.' | Some other column values </br>'; 
     } 

    ?> 

你會得到這個

O1A1 | O2A1 | Some other column values 
    O1A1 | O2A2 | Some other column values 
    O1A1 | O2A3 | Some other column values 
    O1A2 | O2A1 | Some other column values 
    O1A2 | O2A2 | Some other column values 
    O1A2 | O2A3 | Some other column values 
+0

謝謝,我試過你的代碼,但它可以用於數組中的總共2項。我需要它動態的,可以將任何(n)沒有項目的數據加入到數組中。 –

0

爵士,檢查這一個,如果是對你有幫助...

<?php 
$input = array(
       0 => array(
        'cid' => 'O1', 
        'values' => array (0 => 'O1A1',1 => 'O1A2', 2=>'01A3',3=>'01A4')), 
       1 => array(
        'cid' => 'O2', 
        'values' => array (0 => 'O2A1', 1 => 'O2A2', 2=>'O2A3',3=>'O2A4',4=>'O2A5')) 
      ); 

$matrixArr =array(); 

for($i= 0; $i < count($input[0]['values']); $i++) 
{ 
    for($j=0; $j < count($input[1]['values']); $j++) 
    { 
     $matrixArr[$input[0]['values'][$i]][]= $input[1]['values'][$j]; 
    } 
} 

foreach($matrixArr as $key =>$val) 
{ 
    foreach($val as $v) 
    { 
     echo $key." | ".$v.' | Some other column values </br>'; 
    } 
} 
?>