我有2*array
我想要merge
他们,但每个主题都有一些NULL
rows
.
$a = array(
'a' => NULL,
'b' => 1,
'c' => 1
);
$b = array(
'a' => 1,
'b' => NULL,
'c' => 1
);
Run Code Online (Sandbox Code Playgroud)
所以,代码:
$c = array_merge($a,$b);
Run Code Online (Sandbox Code Playgroud)
会给$ c:
array {
'a'=> 1
'b'=> NULL
'c'=>1
}
Run Code Online (Sandbox Code Playgroud)
是否有内置或简单的方法来执行保证金($a,$b)
,如下所示,但现在$a
覆盖每个相同的索引$b
.$b
如果$b
索引是null
- 在示例中$b['b']
应该覆盖,我希望被$ a索引覆盖$a
如果可能,应填充所有NULL行.
Fab*_*bio 16
我认为您可以使用array_filter
函数删除两个数组中的空值,然后合并它们
$a = array(
'a' => NULL,
'b' => 1,
'c' => 1
);
$b = array(
'a' => 1,
'b' => NULL,
'c' => 1
);
$b = array_filter($b);
$a = array_filter($a);
$c = array_merge($a, $b);
var_dump($c);
Run Code Online (Sandbox Code Playgroud)
这将输出
array(3) {
["b"]=> int(1)
["c"]=> int(1)
["a"]=> int(1)
}
Run Code Online (Sandbox Code Playgroud)
作为附注我会补充说,使用array_filter
没有第二个参数将最终删除所有NULL
值以及EMPTY
数组等.如果你只想删除NULL
值,所以你需要使用array_filter($yourarray, 'strlen');
EDITED
如果你想要保留NULL
两个数组都使用相同的键,并假设两个数组都有相同数量的键/值,那么你需要在数组中循环并构建一个新数组,保留NULL
你需要的位置
$a = array(
'a' => NULL,
'b' => 1,
'c' => 1,
'd' => NULL
);
$b = array(
'a' => 1,
'b' => NULL,
'c' => 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);
Run Code Online (Sandbox Code Playgroud)
这将输出
array (size=4)
'a' => int 1
'b' => int 1
'c' => int 1
'd' => NULL
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
9163 次 |
最近记录: |