2016-03-15 63 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>'; 
    } 
} 
?>