在php中组合两个(或更多..)多维数组

2023-12-28

我有一个使用不同参数运行多次的查询。我正在使用 xml 解析器将结果返回给 jQuery。

我似乎无法找到一种方法来组合第一个“节点”上的结果而不覆盖第一个条目。

简化的代码示例:

$temp1 = returnArray(0);

$temp2 = returnArray(1);

$data = array_merge($temp1, $temp2);

print_r($data);

function returnArray($switch)
{
    if($switch == 0)
    {
        $data['data']['first'] = "something";
    } else {
        $data['data']['second'] = "something ELSE";
    }
    return $data;
}

结果打印出来Array ( [data] => Array ( [second] => something ELSE ) )- $temp2 正在覆盖 $temp1。我理解这是 array_merge() 的默认行为,这让我感到困惑。

我也尝试过做类似的事情$data = $temp1+$temp2; or...

$data = returnArray(0);

$data += returnArray(1);

prints Array ( [data] => Array ( [first] => something ) )

or...

$data = returnArray(0);

$data .= returnArray(1);
print_r($data);

prints ArrayArray

我最终把这个组合在一起:

$data['data'] = returnArray(0);
$data['data'] = returnArray(1);

function returnArray($switch){
  if($switch == 0) return Array('first' => 'something');
  else return Array('second' => 'something else');
}

我对此不太满意......虽然它在这种情况下完成了工作,但当将来发生更复杂的情况时,它不会那么适用。

有没有更好的方法来获取两个关联的多维数组并将它们组合起来而不覆盖?

EDIT:

我希望该方法可重用、可扩展,并且能够处理 2 个以上具有 2 个以上维度的数组。


PHP实际上提供了一个函数叫做array_merge_recursive() http://php.net/manual/en/function.array-merge-recursive.php这正是在这种类型的场景中使用的。来自文档页 http://php.net/manual/en/function.array-merge-recursive.php#refsect1-function.array-merge-recursive-description:

array_merge_recursive()合并了 一个或多个数组的元素 在一起,以便一个人的价值观 附加到上一个的末尾 一。它返回结果数组。

如果输入数组具有相同的 字符串键,然后是这些键的值 键被合并在一起形成一个 数组,这是递归完成的, 这样如果其中一个值是 数组本身,该函数将合并 它与相应的条目 还有另一个数组。然而,如果 数组具有相同的数字键, 后面的值不会覆盖 原始值,但将被附加。

Example:

<?php
$ar1 = array("color" => array("favorite" => "red"), 5);
$ar2 = array(10, "color" => array("favorite" => "green", "blue"));
$result = array_merge_recursive($ar1, $ar2);
print_r($result);
?>

Output:

Array
(
    [color] => Array
        (
            [favorite] => Array
                (
                    [0] => red
                    [1] => green
                )

            [0] => blue
        )

    [0] => 5
    [1] => 10
)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在php中组合两个(或更多..)多维数组 的相关文章