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

时间:2018-06-04 04:18:07

标签: php codeigniter

我想在此代码中计算此$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>';
}

但是我收到了这个错误:

  

遇到严重错误:警告

     

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

     

文件名:controllers / jadwal.php

     

行号:166

如何解决此错误?

4 个答案:

答案 0 :(得分:0)

您将$maxjam变量设置为整数,因此count函数失败。如果要创建新数组并在每次迭代时追加新元素,请使用$maxjam[] = <value>

$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>';
}

答案 1 :(得分:0)

count函数用于数组或对象,$ 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;

答案 2 :(得分:0)

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

$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>';

答案 3 :(得分:0)

尝试一下,此方法将替换所有其他方法。这是因为您使用的是新版本,应该返回一个数组。如果您使用的是CODEIGNITER,则只需更改代码即可,如下所述。

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

if (count((array)$chkAdminExist)):

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