2011-07-12 169 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功能。