count():参数必须是在codeigniter中实现Countable的数组或者对象

Posted

技术标签:

【中文标题】count():参数必须是在codeigniter中实现Countable的数组或者对象【英文标题】:count(): Parameter must be an array or an object that implements Countable in codeigniter 【发布时间】:2018-11-13 08:40:52 【问题描述】:

我想在这段代码中统计这个$maxjam变量

$my_array = array(1,2,3,4,5,6);
shuffle($my_array);

foreach ($my_array as $key => $value) 
$hari = $my_array[$key];
if($hari == 5)

    $maxjam = 6;
elseif ($hari == 6)

    $maxjam = 8;

else  

    $maxjam = 7;



$jumlahjam = count($maxjam);
print_r($jumlahjam);
echo'<br>';

但我得到这个错误:

遇到 php 错误 严重性:警告

消息:count():参数必须是数组或对象 实现可数

文件名:controllers/jadwal.php

行号:166

如何解决这个错误?

【问题讨论】:

var_dump of $maxjam。它显示了什么?由于错误提示 $maxjam 不是数组或可数对象,因此您不能在其上使用 count 等等,var_dump 不需要了,你明明把$maxjam 定义为一个整数,那你为什么要数它呢?你想达到什么目的? 为什么要计算它? echo $maxjam; 看起来就像你想要的一切 $maxjam 是一个 int,不是数组或对象,所以你不能数它... 你到底想对整个脚本做什么? 【参考方案1】:

您将$maxjam 变量设置为整数,因此count 函数失败。如果您想创建一个新数组并在每次迭代时添加一个新元素,请使用$maxjam[] = &lt;value&gt;

$my_array = [1,2,3,4,5,6];
shuffle($my_array);
$maxjam = [];

foreach ($my_array as $hari) 
    if($hari == 5) 
        $maxjam[] = 6;
     elseif ($hari == 6) 
        $maxjam[] = 8;
     else   
        $maxjam[] = 7;
    

    $jumlahjam = count($maxjam);
    print_r($jumlahjam);
    echo'<br>';

【讨论】:

您正在假设 OP 的预期行动,这绝不是回答问题的好方法。 这里非常同意@Script47。假设可能会扼杀你的答案。另外,您的答案是错误的,您正在循环内运行计数,因此每次都会发生......【参考方案2】:

计数函数用于数组或对象,$maxjam 是整数。 我正在使用 php 7.1 并且在您的代码中运行良好。但一切都是1。 我想你想要一些它

$maxjam = 0;
foreach ($my_array as $key => $value) 
    $hari = $my_array[$key];
    if($hari == 5)    
        $maxjam+= 6;
    elseif ($hari == 6)    
        $maxjam+= 8;    
    else      
        $maxjam+= 7;    
    

echo $maxjam;

【讨论】:

【参考方案3】:

数组类型变量应该用于计数功能。

$my_array = array(1,2,3,4,5,6);
shuffle($my_array);$maxjam=array();
foreach ($my_array as $key => $value)
    $hari = $my_array[$key];
    if($hari == 5)  
    array_push($maxjam,6);
    elseif ($hari == 6)a
    rray_push($maxjam,8);
    else 
    array_push($maxjam,7);
    

$jumlahjam = count($maxjam);
print_r($jumlahjam);
echo'<br>';

【讨论】:

【参考方案4】:

试试这个,这个方法替换了所有其他方法。这是因为你使用的是新版本,你应该返回一个数组。如果你正在使用 CODEIGNITER ,那么只需按照我下面提到的那样更改代码

更改您的if (count($chkAdminExist)):if (count((array)$chkAdminExist)):

ps:$chkAdminExist 是我的变量,这可能与你的不同

【讨论】:

以上是关于count():参数必须是在codeigniter中实现Countable的数组或者对象的主要内容,如果未能解决你的问题,请参考以下文章

为啥我得到错误count():参数必须是在laravel中实现Countable的数组或对象?

PHP 警告:count():参数必须是在 C:\\htdocs\my.php 中实现 Countable 的数组或对象 [关闭]

Drupal:count():参数必须是数组或者实现了Countable的对象

在 CodeIgniter 中使用搜索过滤器进行分页

通过数组codeigniter从数据库中获取结果

CodeIgniter 控制器方法参数问题