合并多个多维数组

时间:2011-07-12 19:51:53

标签: php arrays

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

例如:

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

但是每个数组都可能有不同的项目数量。

我想将所有数组转换为一个包含大量行的单个表。我尝试了array_merge()但最终得到了一个包含8,12,16 ...列而不是更多行的表。

所以...任何想法?

由于

2 个答案:

答案 0 :(得分:2)

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

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

这应该有效,因为有关array_merge的文档说:

  

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

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

答案 1 :(得分: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函数。