如何合并 php 中的数组,即使其中一个数组为空?
how do I merge arrays in php even if one of those arrays is null?
现在我使用 array_merge_recursive
但如果我的 3 个数组之一为 null 我得到 echo json_encode($array4);
null
我的 php
文件中有 3 个 arrays
:
$array1 = json_decode($array1, TRUE);
$array2 = json_decode($array2, TRUE);
$array3 = json_decode($array3, TRUE);
如果我echo
每个数组:
echo json_encode($array1);
= {"results":[{"cat_id":2,"cat_name":"bicycle repairs"}]}
echo json_encode($array2);
= {"results":[{"cat_id":"4","cat_name":"plumber"},{"cat_id":"5","cat_name":"Electrician"},{"cat_id":"6","cat_name":"vet"}]}
echo json_encode($array3);
={"results":[{"cat_id":3,"cat_name":"Doctor"}]}
然后我像这样将这些数组合并在一起:
$array4 = array_merge_recursive($array1['results'], $array2['results'], $array3['results']);
哪个会给我:
[{"cat_id":2,"cat_name":"bicycle repairs"},{"cat_id":"4","cat_name":"plumber"},{"cat_id":"5","cat_name":"Electrician"},{"cat_id":"6","cat_name":"vet"},{"cat_id":3,"cat_name":"Doctor"}]
但如果 $array1
、$array2
或 $array3
中的任何一个为空,则 $array4
不起作用。我该如何克服这个问题?
恐怕库只接受数组作为参数 (https://www.php.net/manual/en/function.array-merge-recursive.php)。
因此,如果您想合并所有元素,我建议您使用 ?? (Null Coalescing operator) return 第一个参数如果 isset 并且不为 null,你可以这样做:
array_merge_recursive($array1['results']??[], $array2['results']??[], $array3['results']??[])
我会做一个辅助函数来检查你的变量是否是一个数组。如果不只是让它成为一个空的
function MakeArray($arr){
if (!is_array($arr)) return [];
return $arr;
}
$arr1 = MakeArray([1,2,4]);
$arr2 = MakeArray([5,6]);
$arr3 = MakeArray(NULL);
这样你就可以保证它会工作,即使你传递,例如,一个字符串
现在我使用 array_merge_recursive
但如果我的 3 个数组之一为 null 我得到 echo json_encode($array4);
null
我的 php
文件中有 3 个 arrays
:
$array1 = json_decode($array1, TRUE);
$array2 = json_decode($array2, TRUE);
$array3 = json_decode($array3, TRUE);
如果我echo
每个数组:
echo json_encode($array1);
= {"results":[{"cat_id":2,"cat_name":"bicycle repairs"}]}
echo json_encode($array2);
= {"results":[{"cat_id":"4","cat_name":"plumber"},{"cat_id":"5","cat_name":"Electrician"},{"cat_id":"6","cat_name":"vet"}]}
echo json_encode($array3);
={"results":[{"cat_id":3,"cat_name":"Doctor"}]}
然后我像这样将这些数组合并在一起:
$array4 = array_merge_recursive($array1['results'], $array2['results'], $array3['results']);
哪个会给我:
[{"cat_id":2,"cat_name":"bicycle repairs"},{"cat_id":"4","cat_name":"plumber"},{"cat_id":"5","cat_name":"Electrician"},{"cat_id":"6","cat_name":"vet"},{"cat_id":3,"cat_name":"Doctor"}]
但如果 $array1
、$array2
或 $array3
中的任何一个为空,则 $array4
不起作用。我该如何克服这个问题?
恐怕库只接受数组作为参数 (https://www.php.net/manual/en/function.array-merge-recursive.php)。
因此,如果您想合并所有元素,我建议您使用 ?? (Null Coalescing operator) return 第一个参数如果 isset 并且不为 null,你可以这样做:
array_merge_recursive($array1['results']??[], $array2['results']??[], $array3['results']??[])
我会做一个辅助函数来检查你的变量是否是一个数组。如果不只是让它成为一个空的
function MakeArray($arr){
if (!is_array($arr)) return [];
return $arr;
}
$arr1 = MakeArray([1,2,4]);
$arr2 = MakeArray([5,6]);
$arr3 = MakeArray(NULL);
这样你就可以保证它会工作,即使你传递,例如,一个字符串