PHP array_merge空值总是优先级较低


PHP array_merge empty values always less prioritar

我的目标是合并两个不同的数组。

我有桌子"a"&"b"。表"a"中的数据更优先。

问题:如果"a"中的键包含一个空值,我想取表"b"中的值。

这是我的代码:

<?php
$a = array('key1'=> "key1 from prioritar", 'my_problem'=> "");
$b = array('key1'=> "key1 from LESS prioritar", 'key2'=>"key2 from LESS prioritar", 'my_problem'=> "I REACHED MY GOAL!");
$merge = array_merge($b, $a);
var_dump($merge);

有没有一种方法可以在一个函数中做到这一点,而无需执行以下操作?

foreach($b as $key => $value)
{
  if(!array_key_exists($key, $a) || empty($a[$key]) ) {
    $a[$key] = $value;
  }
}

您可以使用array_replacearray_filter

$mergedArray = array_replace($b, array_filter($a));

结果是:

array(3) {
  ["key1"]=>
  string(19) "key1 from prioritar"
  ["key2"]=>
  string(24) "key2 from LESS prioritar"
  ["my_problem"]=>
  string(18) "I REACHED MY GOAL!"
}

只需array_filter()$a,它将删除任何具有''值的项。

$merge = array_merge($b, array_filter($a));