该错误消息不是很清楚并且具有误导性。据我所知,该消息将在未来得到修复,并变得更加清晰。
这实际上意味着你正在通过null
而不是数组内爆。
这个错误是有道理的,因为 null 不是数组,并且不应该内爆 null。
所以错误来自于这样的事实内爆有two签名,一种涉及两个参数,一种仅涉及一个参数:
// just two familiar parameters, a glue and array
implode(string $separator, array $array): string
// Alternative signature, array only without a glue
implode(array $array): string
当使用两个参数调用 implode 时,但第二个是null
, 内爆thinks它只用一个(必须是一个数组)来调用,因此会抱怨,发出您看到的错误。
要修复此错误,只需确保不会对空值调用 implode,因为它没有任何意义。
作为最后的手段,如果您无法控制提供数组的代码,您可以使用如下解决方法来消除此错误
implode($separator, $array ?? []);
When $array
is null
,此代码将仅返回一个空字符串。但您必须明白,它与任何其他错误抑制一样糟糕。再说一次,最好是修复错误,而不是修复症状。