如何合并PHP数组?
我有两组动物(例如)如何合并PHP数组?,php,arrays,Php,Arrays,我有两组动物(例如) 如何通过ID将两个数组合并为一个?首先,为什么不使用ID作为索引(或键,在php数组所属的映射样式数组中) 之后,您必须通过一个数组进行foreach,对另一个数组的项执行array\u merge: foreach($array2 as $key=>$value) { if(!is_array($array[$key])) $array[$key] = $value; else $array[$key] = array_merge($array[key],
如何通过ID将两个数组合并为一个?首先,为什么不使用ID作为索引(或键,在php数组所属的映射样式数组中) 之后,您必须通过一个数组进行foreach,对另一个数组的项执行array\u merge:
foreach($array2 as $key=>$value) {
if(!is_array($array[$key])) $array[$key] = $value;
else $array[$key] = array_merge($array[key], $value);
}
至少是这样。也许有更好的解决方案?这符合Erik的建议(id号作为数组键),并将
$array2
中的vlaues合并到$results
$results = array();
foreach($array as $subarray)
{
$results[$subarray['id']] = array('name' => $subarray['name']);
}
foreach($array2 as $subarray)
{
if(array_key_exists($subarray['id'], $results))
{
// Loop through $subarray would go here if you have extra
$results[$subarray['id']]['age'] = $subarray['age'];
}
}
@安迪
这是我的第一个想法,但它不太管用——尽管可能管用——现在懒得检查。
我已经看过了,但没有看到它如何帮助合并多维数组。也许你可以举个例子
这可能是我需要做的,因为我认为下面的代码会非常慢。
实际的代码有点不同,因为我正在使用ADOdb(另一个查询使用ODBC),但我会让它工作并发布我自己的答案
这是可行的,但我认为它会非常缓慢,因为它每次都会通过第二个循环:
foreach($array as &$animal)
{
foreach($array2 as $animal2)
{
if($animal['id'] === $animal2['id'])
{
$animal = array_merge($animal, $animal2);
break;
}
}
}
由于性能问题,我更喜欢
阵列拼接
而不是阵列合并
,我的解决方案是:
<?php
array_splice($array1,count($array1),0,$array2);
?>
这就是结果:
[1] => Array
(
[name] => Cat
[age] => 123
)
[2] => Array
(
[name] => Mouse
[age] => 321
)
使用PHP5.3,您可以使用array\u replace\u recursive()进行这种合并 您得到的结果数组应该如下所示:
Array (
[0] => Array
(
[id] => 2
[name] => Cat
[age] => 321
)
[1] => Array
(
[id] => 1
[name] => Mouse
[age] => 123
)
)
这就是我认为你想要的结果
<?php
$a = array('a' => '1', 'b' => array('t' => '4', 'g' => array('e' => '8')));
$b = array('c' => '3', 'b' => array('0' => '4', 'g' => array('h' => '5', 'v' => '9')));
$c = array_merge_recursive($a, $b);
print_r($c);
?>
Array
(
[a] => 1
[b] => Array
(
[t] => 4
[g] => Array
(
[e] => 8
[h] => 5
[v] => 9
)
[0] => 4
)
[c] => 3
)
<?php
array_splice($array1,count($array1),0,$array2);
?>
foreach ($array as $a)
$new_array[$a['id']]['name'] = $a['name'];
foreach ($array2 as $a)
$new_array[$a['id']]['age'] = $a['age'];
[1] => Array
(
[name] => Cat
[age] => 123
)
[2] => Array
(
[name] => Mouse
[age] => 321
)
<?php
$array1 = array("color" => "red", 2, 4);
$array2 = array("a", "b", "color" => "green", "shape" => "trapezoid", 4);
$result = array_merge($array1, $array2);
print_r($result);
?>
Array (
[0] => Array
(
[id] => 2
[name] => Cat
[age] => 321
)
[1] => Array
(
[id] => 1
[name] => Mouse
[age] => 123
)
)