Php 参数#2不是数组

Php 参数#2不是数组,php,Php,我无法想象我在这里做错了什么,但是当我尝试合并两个数组时,我得到了参数#2不是数组。参数#2当然是一个数组,但PHP的感觉不同。这是我能从代码中得到的最具体的信息$bigKeys和$littleKeys都是从数据库中提取的,所以我不知道它们是否为null。所以我检查一下!我有: return array_merge( $bigKeys ? $bigKeys : array(), $littleKeys ? $littleKeys : array() ); 现在的问题是,在我正在测试的情

我无法想象我在这里做错了什么,但是当我尝试合并两个数组时,我得到了
参数#2不是数组。参数#2当然是一个数组,但PHP的感觉不同。这是我能从代码中得到的最具体的信息
$bigKeys
$littleKeys
都是从数据库中提取的,所以我不知道它们是否为null。所以我检查一下!我有:

return array_merge(
  $bigKeys ? $bigKeys : array(),
  $littleKeys ? $littleKeys : array()
);
现在的问题是,在我正在测试的情况下,
$littleKeys
NULL
,因此根据这里的三元组,它应该是一个空数组

gettype($littleKeys ? $littleKeys : array()); // This returns "array"

那么到底发生了什么呢?

我将代码更改为:

return array_merge(
    is_array($bigKeys) ? $bigKeys : array(),
    is_array($littleKeys) ? $littleKeys : array()
);

就好像您的变量(
$bigKeys
$littleKeys
)在示例中是字符串、
true
,或其他任何东西一样,它的计算结果为true。因此,您无法确定是否将数组传递给
array\u merge()
函数。这很可能也会解决您的问题(我不相信
数组\u merge
函数中有什么疯狂的bug;)

我会将代码更改为:

return array_merge(
    is_array($bigKeys) ? $bigKeys : array(),
    is_array($littleKeys) ? $littleKeys : array()
);

就好像您的变量(
$bigKeys
$littleKeys
)在示例中是字符串、
true
,或其他任何东西一样,它的计算结果为true。因此,您无法确定是否将数组传递给
array\u merge()
函数。这很可能也会解决您的问题(我不相信
数组\u merge
函数中有什么疯狂的bug;)

我会将代码更改为:

return array_merge(
    is_array($bigKeys) ? $bigKeys : array(),
    is_array($littleKeys) ? $littleKeys : array()
);

就好像您的变量(
$bigKeys
$littleKeys
)在示例中是字符串、
true
,或其他任何东西一样,它的计算结果为true。因此,您无法确定是否将数组传递给
array\u merge()
函数。这很可能也会解决您的问题(我不相信
数组\u merge
函数中有什么疯狂的bug;)

我会将代码更改为:

return array_merge(
    is_array($bigKeys) ? $bigKeys : array(),
    is_array($littleKeys) ? $littleKeys : array()
);

就好像您的变量(
$bigKeys
$littleKeys
)在示例中是字符串、
true
,或其他任何东西一样,它的计算结果为true。因此,您无法确定是否将数组传递给
array\u merge()
函数。这很可能也会解决您的问题(我不相信
数组\u merge
函数中有什么疯狂的错误)

如果$bigKeys=true怎么办?你根本没有检查它们是否是数组。只是它们以某种方式存在。
var\u转储什么($littleKeys)显示?
变量转储($littleKeys)
在三元返回
NULL
…之前,我们看到了一个错误,表明情况并非如此。我不知道,您选择对我们隐藏该部分代码。如果$bigKeys=true怎么办?你根本没有检查它们是否是数组。只是它们以某种方式存在。
var\u转储什么($littleKeys)显示?
变量转储($littleKeys)
在三元返回
NULL
…之前,我们看到了一个错误,表明情况并非如此。我不知道,您选择对我们隐藏该部分代码。如果$bigKeys=true怎么办?你根本没有检查它们是否是数组。只是它们以某种方式存在。
var\u转储什么($littleKeys)显示?
变量转储($littleKeys)
在三元返回
NULL
…之前,我们看到了一个错误,表明情况并非如此。我不知道,您选择对我们隐藏该部分代码。如果$bigKeys=true怎么办?你根本没有检查它们是否是数组。只是它们以某种方式存在。
var\u转储什么($littleKeys)显示?
变量转储($littleKeys)
在三元返回
NULL
…之前,我们看到了一个错误,表明情况并非如此。我不知道,您选择对我们隐藏这部分代码。