PHP合并空数上的数组

前端之家收集整理的这篇文章主要介绍了PHP合并空数上的数组前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有2 *数组,我想合并它们,但每个主题都有一些NULL行.
$a = array(
    'a' => NULL,'b' => 1,'c' => 1
);

$b = array(
    'a' => 1,'b' => NULL,'c' => 1    
);

所以,代码

$c = array_merge($a,$b);

会给$c:

array {
  'a'=> 1
  'b'=> NULL
  'c'=>1
}

是否有内置或简单的方法来执行保证金($a,$b),如下所示,但现在$a被覆盖为$b的每个相同指数.如果$b index为null,我希望$b被$a index覆盖 – 例如$b [‘b’]应该从$a覆盖

如果可能,应填充所有NULL行.

我认为您可以使用 array_filter函数删除两个数组中的空值,然后合并它们
$a = array(
    'a' => NULL,'c' => 1    
);

$b  = array_filter($b);
$a  = array_filter($a);
$c = array_merge($a,$b);
var_dump($c);

这将输出

array(3) {
  ["b"]=> int(1)
  ["c"]=> int(1)
  ["a"]=> int(1)
}

LIVE SAMPLE

作为旁注,我想补充一点,使用array_filter而不使用第二个参数将最终删除所有NULL值以及EMPTY数组等.如果你只想删除NULL值,那么你需要使用array_filter($yourarray,’strlen’) ;

EDITED

如果你想保留NULL,如果两个数组都有相同的键,并假设两个数组都有相同数量的键/值,那么你需要在你的数组中循环并构建一个新的数组,保留你需要的NULL

$a = array(
    'a' => NULL,'c' => 1,'d' => NULL
);

$b = array(
    'a' => 1,'d' => NULL,);

$c = array();
foreach($a as $key => $val)
{
    if($key == NULL && $b[$key] == NULL)
    {
        $c[$key] = $val;
    } else if($key != NULL && $b[$key] == NULL) {
        $c[$key]= $val;
    } else if($key != NULL && $b[$key] != NULL) {
        $c[$key]= $b[$key];
    } else {
        $c[$key]= $b[$key];
    }
}
var_dump($c);

这将输出

array (size=4)
  'a' => int 1
  'b' => int 1
  'c' => int 1
  'd' => NULL

LIVE SAMPLE

原文链接:https://www.f2er.com/php/134753.html

猜你在找的PHP相关文章