PHP array_merge 空值总是不太优先
PHP array_merge empty values always less prioritar
我的目标是合并 2 个不同的数组。
我有 table "a" & "b"。
来自 table "a" 的数据更优先。
问题:如果 "a" 中的键包含一个空值,我想从 table "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_replace
和 array_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));
我的目标是合并 2 个不同的数组。
我有 table "a" & "b"。 来自 table "a" 的数据更优先。
问题:如果 "a" 中的键包含一个空值,我想从 table "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_replace
和 array_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));