似乎我有关于数组的问题会根据第二个数组的值和位置改变第一个数组的值。用语言来解释似乎很难,我会举一个例子来说明这一点。
我有第一个数组
Array
(
[0] => one
[1] => two
[2] => three
[3] => four
[4] => five
)
这是我的第二个数组
Array
(
[0] =>
[1] => cat
[2] =>
[3] => dog
[4] =>
)
我希望的结果应该是这样的
Array
(
[0] => one
[1] => cat
[2] => three
[3] => dog
[4] => five
)
所以,如果我将第二个数组改为
Array
(
[0] =>
[1] =>
[2] =>
[3] => dog
[4] => cat
)
结果就像这样
Array
(
[0] => one
[1] => two
[2] => three
[3] => dog
[4] => cat
)
所以意思是,第二个数组就像替换第一个数组一样。
我使用 array_diff 来获取两个阵列的区别,这就是我被卡住的地方。
任何帮助都会受到赞赏。
答案 0 :(得分:1)
可能有更好的方法,但你可以这样做:
for ($i = 0; $i < count($array1); $i++) {
if ($array2[$i] == null || $array2[$i] == "") {
$newArray[$i] = $array1[$i];
}
else {
$newArray[$i] = $array2[$i];
}
}
$newArray
将包含$array1
中的所有值,除非$array2
中存在非空值或空值(基于数组索引),在这种情况下,它将覆盖该值在$array1
。
答案 1 :(得分:1)
答案 2 :(得分:1)
答案 3 :(得分:1)
最简单的方法是循环遍历第二个数组并根据键将其值分配给第一个数组...
$arr1=array ("one","two","three","four","five");
$arr2=array( 2=>"cat",4="dog");
foreach ($arr2 as $key=>$value){
if (!empty($value)){
$arr1[$key]=$value;
}
}