PHP array_merge空值总是少于优先级

Bas*_*ast 6 php arrays array-merge

我的目标是合并两个不同的阵列.

我有表"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);
Run Code Online (Sandbox Code Playgroud)

有没有办法在一个函数中执行此操作而不执行下面的操作?

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

Mat*_*hai 5

你可以使用array_replacearray_filter

$mergedArray = array_replace($b, array_filter($a));
Run Code Online (Sandbox Code Playgroud)

结果将是:

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

  • 请注意,`array_filter($ a)+ $ b`也可以. (2认同)