0

似乎我有一个关于数组的问题,它会根据第二个数组的值和位置改变第一个数组的值。这似乎很难用语言来解释,我将举一个例子来使这更容易理解。

我有这个第一个数组

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

4 回答 4

1

可能有更好的方法,但您可以执行以下操作:

for ($i = 0; $i < count($array1); $i++) {
    if ($array2[$i] == null || $array2[$i] == "") {
        $newArray[$i] = $array1[$i];
    }
    else {
        $newArray[$i] = $array2[$i];
    }
}

$newArray将包含 from 中的所有值,$array1除非存在非 null 或空值$array2(基于数组索引),在这种情况下,它将覆盖 in 中的值$array1

于 2013-05-09T03:32:57.007 回答
1

也许这个链接关于

array_merge

可能有用

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

于 2013-05-09T03:34:22.933 回答
1

我认为这应该有效:

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

演示在这里

于 2013-05-09T03:35:10.767 回答
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;
  }
}
于 2013-05-09T03:35:17.080 回答