gpt4 book ai didi

php - count() 参数必须是一个数组或一个在 Laravel 中实现 countable 的对象

转载 作者:行者123 更新时间:2023-12-02 07:33:10 25 4
gpt4 key购买 nike

这是代码:

protected function credentials(Request $request)
{
$admin=admin::where('email',$request->email)->first();
if(count($admin))
{
if($admin->status==0){
return ['email'=>'inactive','password'=>'You are not an active person, Please contact to admin'];
}
else{
return ['email'=>$request->email,'password'=>$request->password,'status'=>1];
}
}
return $request->only($this->username(), 'password');
}

当我运行代码时,此错误变为:

"count(): Parameter must be an array or an object that implements Countable"

最佳答案

首先,您必须了解 PHP 生成的每条错误消息都是为了帮助您,并使您的代码更清晰、更少错误。

当您的代码包含错误时,最好的办法是修复它,而不是忽略它。这里的大多数答案都可以帮助您解决后者。但你真的应该考虑做前者。

每条错误消息都可以帮助您找到代码中的错误。这意味着错误不应该是故意的或“习惯性的”。这样您就不必让它们保持沉默,并且每个错误都意味着您的代码确实遇到了错误。

就像你的情况一样。您不是故意使用 count() 的。不实际计算任何值,而只是判断返回值是否为空。为此,您可以使用变量本身:

if ($admin)

这在 PHP 中是完全有效的。或者,如果你想比教皇更天主教,你可以让它更严格,但仍然是有意的

if ((bool)$admin === true)

因此,每次函数可能返回 falsearray 时,您都应该这样做。这样,当访问 if 内部的返回值时,您将永远不会收到与数组使用不当相关的错误。除非返回的值非空且不是数组 - 这种错误消息正是针对这种情况而发明的!

因此,只需确保每个应返回数组的函数、返回数组或任何应包含数组的变量都包含数组。并且您不会再看到此错误。除非由于某些错误,您的代码将意外返回非数组值。此错误消息将帮助您查明此问题。

当事情不受您控制时,例如您需要从外部变量获取数组,请首先进行验证。例如,如果您需要表单中的数组,这是必须的,请验证它并返回错误,例如

if (!$isset($_POST['options']) || !is_array($_POST['options'])) {
// inform the user ad stop execution
} else {
$options = $_POST['options'];
}
// now you can safely use count() on $options

如果数组是可选的,您可以将其初始化为空数组:

if (!$isset($_POST['options'])) {
$options = [];
} elseif (!is_array($_POST['options'])
// inform the user ad stop execution
} else {
$options = $_POST['options'];
}
// now you can safely use count() on $options

只有作为最后的手段,您才可以使用这样的条件来消除此错误

count((is_countable($admin) ? $admin :[]))

或下面提供的选角

关于php - count() 参数必须是一个数组或一个在 Laravel 中实现 countable 的对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53020833/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com