加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

PHP合并空数上的数组

发布时间:2020-12-13 18:09:15 所属栏目: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} 是否有内置或简单的方法来执行
我有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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读