如何使用PHP将数组值替换为另一个数组值?

时间:2017-06-23 09:07:10

标签: php

我有两个数组如下:

$arr = array('one.jpg', 'two.jpg', 'three.jpg');
$arr1 = array('', 'five.jpg', '');

现在我想将这两个数组放到一个具有以下值的数组中:

$newArray = array('one.jpg', 'five.jpg', 'three.jpg');

如何使用PHP执行此操作?

4 个答案:

答案 0 :(得分:3)

使用array_filter删除空值。

使用array_replace将第一个数组中的值替换为第二个数组的剩余值。

$arr1=array_filter($arr1);
var_dump(array_replace($arr,$arr1));

答案 1 :(得分:2)

假设您想要仅使用第二个中的 truthy 值覆盖第一个数组中的条目:

$newArray = array_map(function ($a, $b) { return $b ?: $a; }, $arr, $arr1);

答案 2 :(得分:1)

您可以遍历数组并检查第二个数组的值:

$arr = array('one.jpg', 'two.jpg', 'three.jpg');
$arr1 = array('', 'five.jpg', '');
$newArray =array();
foreach ($arr as $key => $value) {
    if(isset($arr1[$key]) && $arr1[$key] != "")
        $newArray[$key] = $arr1[$key];
    else
        $newArray[$key] = $value;
}
var_dump($newArray);

答案 3 :(得分:0)

使用for循环的简单解决方案,不确定是否有更优雅的一个:

$arr = array('one.jpg', 'two.jpg', 'three.jpg');
$arr1 = array('', 'five.jpg', '');

$newArray = array();
$size = count($arr);
for($i = 0; $i < $size; ++$i) {
    if(!empty($arr1[$i])){
       $newArray[$i] = $arr1[$i];
    } else {
       $newArray[$i] = $arr[$i];
    }
 }