在我的网站上,我允许人们上传图片画廊。当他们点击图像时,底部有一个下一个和上一个按钮,这样他们就可以很容易地在图像中来回滚动。
我在位于/opt/cpanel/ea-php72/root/usr/var/log/php-fpm的日志中得到以下错误/
NOTICE: PHP message: PHP Warning: count(): Parameter must be an array or an object that implements Countable in . . . on line 12
这是关于我代码中的以下行:
$max = count($photos);
下面是该行附带的其他代码:
$photos = get_field('gallery');
$max = count($photos); <------- error line here -------->
$current = (isset($_GET['image'])) ? intval($_GET['image']) : false;
if ($current !== false) {
if ($current > $max) $current = $max;
if ($current < 1) $current = 1;
}
$next = (($current + 1) < $max) ? ($current + 1) : $max;
$prev = (($current - 1) > 1) ? ($current - 1) : 1;
?>
基本上,这段代码使用get_字段(“gallery”)获取gallery中的照片总数,并将该数字分配给变量max。
代码的其余部分是“下一个”和“上一个”按钮的工作方式。
我不知道出了什么问题。有人能帮忙吗?
一般来说,解决方案很简单:
首先,使用var\u dump()
what$photos
返回。你就会知道问题出在哪里了。
count()。
就这样做吧:
$photos = get_field('gallery');
if(!is_array($photos) || empty($photos)) $photos = array(); // FIX ERROR!!!
$max = count($photos); <------- error line here -------->
$current = (isset($_GET['image']) && !empty($_GET['image']) && is_numeric($_GET['image'])) ? intval($_GET['image']) : 0;
if ($current > 0) {
if ($current > $max) $current = $max;
if ($current < 1) $current = 1;
}
$next = (($current + 1) < $max) ? ($current + 1) : $max;
$prev = (($current - 1) > 1) ? ($current - 1) : 1;
?>
如果(!is_array($photos)| empty($photos))$photos=array(),则使用
之前<代码>$max=计数($photos)
您解决了问题,任何非数组或空(0,NULL,FALSE,'')的内容都将被修复,并且您将在计数$max
结果0
,因为数组为空。
你不应该这样工作。您需要知道在变量中接收和期望的信息。代码必须保持干净,纠正此类错误是一种糟糕的做法。如果您收到一个数组,那么该数组是预期的,您必须在进行任何计算之前进行检查。
你也有错误
$current = (isset($_GET['image'])) ? intval($_GET['image']) : false;
if ($current !== false)
我将其修复为如下工作方式:
$current = (isset($_GET['image']) && !empty($_GET['image']) && is_numeric($_GET['image'])) ? intval($_GET['image']) : 0;
if ($current > 0)
原因是您有下面的计算,并且您不希望
(false 1)
是好的false
可以转换为0
,但在您的情况下,也可能会出现错误。对于这种情况,我将false
替换为0
,添加empty()
和为数值()
检查,您在那里没有错误。
我有问题,为什么我遇到这个错误在我的响应,我有模块,我需要上传多个使用Ajax和PHP作为后端。 Warning: count():参数必须是一个数组或一个对象,该数组或对象在C:\xampp\htdocs\PSMID\Function\mediaunction.php行17 9 WarningC:\xampp\htdocs\PSMID\Function\mediaunction.php17 我将
错误: Countable():参数必须是实现可数的数组或对象 错误来自\vendor\yiisoft\yii2\helpers\BaseHtml.php(第1302行) 它调用:供应商\yiisoft\yii2\Helers\BaseHtml.php(第150行) 这反过来又要求: (也在同一文件中) 问题是:这个错误的来源是什么,它是如何修复/避免的? 答案包括在内,如下所示。。。问题的原因不
我有这个代码返回一个错误: 参数必须是实现可数的数组或对象?
我有一个错误:警告:count():参数必须是实现可计数的数组或对象
我想在此代码中计算此变量 但我得到了这个错误: 遇到PHP错误严重性:警告 Message:count():参数必须是数组或实现可计数的对象 文件名:controllers/jadwal.php 电话号码:166 如何解决这个错误?
您好,抱歉,如果dublicate,但我不知道如何修复PHP 7.24上的MyBB 1.8.15错误警告[2]count():参数必须是一个数组或一个实现可数的对象-Line:906 第906行给出错误的是