2011-07-12 142 views
1

我有一个可变数目的多维数组,但所有的每个项目都有相同的4个可能值。合并多个多维数组

例如:

Array 
    (
      [companyid] => 1  
      [employeeid] => 1 
      [role] => "Something" 
      [name] => "Something" 
    ) 

但是每个阵列可以具有在其内部的项目的不同ammount的。

我想把所有的数组变成一个有很多行的单个表。我尝试array_merge(),但我最终与8,12,16 ...列,而不是更多的行。

那么...有什么想法?

感谢

+0

尝试将它们与+一起添加。 $ array = $ array + another_array; – iLLin

+0

请你可以添加更多的示例数组。我不确定你的意思是“里面有不同数量的物品”。你的意思是有时候这些值是空白的?或者你可以在一个数组中有多组4个值? – andyb

回答

2

没有测试它,但你可以尝试以下方法:

$table = array(); 
$columns = array('companyid' => '', 'employeeid' => '', 'role' => '', 'name' => ''); 
foreach($array as $item) { 
    $table[] = array_merge($columns, $item); 
} 

距今约array_merge文档这应该工作说:

如果输入的数组中有相同的字符串键,那么该密钥的后面的值 将覆盖前一个值。

因此,您要么获取当前项目的值,要么可以在$columns数组中指定默认值。

1
$array1=Array 
    (
      "companyid" => 1, 
      "employeeid" => 4, 
      "role" => "Something", 
      "name" => "Something", 
    ); 

$array2=Array 
    (
      "companyid" => array(2,2,2), 
      "employeeid" => 5, 
      "role" => "Something2", 
      "name" => "Something2" 
    ); 

$array3=Array 
    (
      "companyid" => 3, 
      "employeeid" => 6, 
      "role" => "Something3", 
      "name" => "Something3" 
    ); 
//Using array_merge 
$main_array["companyid"]=array_merge((array)$array1["companyid"],(array)$array2["companyid"],(array)$array3["companyid"]); 
$main_array["employeeid"]=array_merge((array)$array1["employeeid"],(array)$array2["employeeid"],(array)$array3["employeeid"]); 

for($i=0;$i<count($main_array["companyid"]);$i++) 
    echo $main_array["companyid"][$i] + "<br />"; 

for($i=0;$i<count($main_array["employeeid"]);$i++) 
    echo $main_array["employeeid"][$i] + "<br />"; 

我测试过上面的代码和似乎是正确的。 您也可以将此代码改进为DRY功能。