嗨,我有两个像这样的阵列
array (
[0]=>array(
[0]=>10,
[1]=>Some Name..
),
[1]=>array(
[0]=>11,
[1]=>Some Name..
),
[2]=>array(
[0]=>13,
[1]=>Some Name..
)
)
像这样的另一个数组
array (
[0]=>array(
[0]=>13,
[1]=>Viewed
)
)
如何在不使用任何循环的情况下合并上面两个数组?任何PHP功能都可用于此?我需要这种出局
array (
[0]=>array(
[0]=>10,
[1]=>Some Name..
),
[1]=>array(
[0]=>11,
[1]=>Some Name..
), [2]=>array(
[0]=>13,
[1]=>Some Name..
[2]=Viewed
)
)
答案 0 :(得分:7)
您可以使用PHP功能 array_merge_recursive 。 参见示例:
<?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);
?>
答案 1 :(得分:0)
<?php
$array1 = array("color" => "red", 2, 4);
$array2 = array("a", "b", "color" => "green", "shape" => "trapezoid", 4);
$result = array_merge($array1, $array2);
print_r($result);
?>
更多细节检查:
http://php.net/manual/en/function.array-combine.php
http://php.net/manual/en/function.array-merge.php
另见
array array_merge(array $ array1 [,array $ ...]) array_merge_recursive() - 递归地合并两个或多个数组 array_combine() - 通过使用一个数组作为键而另一个数组作为其值来创建数组 数组运算符
答案 2 :(得分:0)
不会有非循环方式来实现这一点。也许您正在寻找基于函数的语法,但对于这种情况,我认为这只会引入不必要的卷积。
为了获得最佳效率,请生成一个兼作查找数组的结果数组。如果该键已存在于结果数组中,则只需将 [1]
值推入该行。如果您想重新索引结果,只需对其调用 array_values()
。
代码:(Demo)
$array1 = [
[10, 'Some Name..'],
[11, 'Some Name..'],
[13, 'Some Name..'],
];
$array2 = [
[13, 'Viewed']
];
$result = [];
foreach (array_merge($array1, $array2) as $row) {
if (!isset($result[$row[0]])) {
$result[$row[0]] = $row;
} else {
$result[$row[0]][] = $row[1];
}
}
var_export($result);
函数风格:(Demo)
$result = [];
$merged = array_merge($array1, $array2);
array_walk(
$merged,
function($row) use(&$result) {
if (!isset($result[$row[0]])) {
$result[$row[0]] = $row;
} else {
$result[$row[0]][] = $row[1];
}
}
);
var_export($result);