【发布时间】:2015-08-17 22:27:02
【问题描述】:
我想将具有不同数量元素的 2 个数组合并在一起,使用其中一个的键和另一个键匹配的值。包含所需值的数组中的元素可能较少,尽管我想保留原始数组中生成的空键。例如:
//包含我想保留的键的数组
$arr1 = array(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12);
//包含我想使用的值的数组
$arr2 = array(01=>123, 03=>123, 05=>123, 07=>123, 09=>123, 11=>123);
//带有一些无价值元素的期望结果
$results = array(01=>123, 02, 03=>123, 04, 05=>123, 06, 07=>123, 08, 09=>123, 10, 11=>123, 12);
如您所见,结果数组保留了 12 个元素,但仅将值应用于 2 个数组中的键匹配的位置。
我在其他 PHP 函数中尝试过 $results = array_intersect_key($arr1 + $arr2, $arr2); 以及:
for ($i=1; $i < count($arr1); $i++) {
if (isset($arr2[$i])) {
$arr3[] = $arr2[$i];
} else {
$arr3[] = $arr1[$i];
}
}
print_r($arr3);
还没有运气。
提前致谢!
【问题讨论】:
-
您意识到
08和09的值不会是大多数人所期望的,但实际上是0.... 以0 开头的数字被视为八进制值 -
认为我理解您的评论并进行了相应的编辑。非常感谢。有解决方案的想法吗?
-
那么,
$arr1中的 值 是否应该是$results中的 键? -
@Don'tPanic,是的,完全正确。