我有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行.
我认为您可以使用
原文链接:https://www.f2er.com/php/134753.htmlarray_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) }
作为旁注,我想补充一点,使用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