更改值取决于PHP中数组的位置

时间:2013-05-09 03:29:55

标签: php arrays

似乎我有关于数组的问题会根据第二个数组的值和位置改变第一个数组的值。用语言来解释似乎很难,我会​​举一个例子来说明这一点。

我有第一个数组

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 来获取两个阵列的区别,这就是我被卡住的地方。

任何帮助都会受到赞赏。

4 个答案:

答案 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)

也许这个关于

的链接
array_merge

可能有用

http://php.net/manual/en/function.array-merge.php

答案 2 :(得分:1)

我认为这应该有效:

foreach($second_array as $k => $v)
{
    if($v != "")
    {
        $first_array[$k] = $v;
    }
}

demo here

答案 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;
  }
}