如何合并 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);

这样你就可以保证它会工作,即使你传递,例如,一个字符串