此问题在此处已有答案:
Laravel 9 in_array(): Argument #2 ($haystack) must be of type array, null given(3个答案)
10天前关门了。
我需要帮助。当我使用php 8.1时,出现了错误,但当我使用php 7.4时,它没有出现。我想使用php 8.1我的代码是
$categorySlug = @array_key_first($post->terms['category']);
if($categorySlug) {
$request = new Request();
$request->per_page = 10;
$request->category = $categorySlug;
$related = $this->getAllPost($request);
}
字符串
错误:array_key_first():参数#1($array)必须是数组类型,行:$categorySlug = @array_key_first($post->terms['category']);
中给定的值为空
我该如何解决问题?
谢谢
1条答案
按热度按时间ltqd579y1#
Kiko的评论是一个很好的建议。
你也可以像这样快速修复
字符串
关于
$post->terms['category'] ?? []
如果
$post->terms['category']
为null,则传递给array_key_first的值将为空数组正如Kiko所建议的,你必须谨慎对待这个测试。
型
array_key_first
可以返回0如果你的数组的第一个键是0.如果array_key_first失败,函数将返回null(检查php手册)所以你必须做这样的严格测试型
总是对php进行严格的测试是一个好习惯。
(Out奇怪的是,在php7.4中你没有一个警告。也许php7.4和php8.1的error_reporting配置是不同的
(Out 2)对于干净的代码和代码类型弱点检测(如
if($categorySlug)
),您可以查看phpstan
包。