array_filter
関数を使用して両方の配列の null 値を削除し、それらをマージできると思います
$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);
これは出力されます
array(3) {
["b"]=> int(1)
["c"]=> int(1)
["a"]=> int(1)
}
ライブサンプル
補足として、2番目のパラメーターなしで使用すると、配列などと同様にarray_filter
すべての値が削除されることを追加します。値のみを削除する場合は、使用する必要がありますNULL
EMPTY
NULL
array_filter($yourarray, 'strlen');
編集済み
両方の配列に同じキーがあり、両方の配列に同じ数のキー/値があると仮定して保持したい場合は、配列内でループし、必要な場所を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);
これは出力されます
array (size=4)
'a' => int 1
'b' => int 1
'c' => int 1
'd' => NULL
ライブサンプル