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[] = <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>';
【讨论】:
您正在假设 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 的数组或对象 [关闭]