codeigniter 3 php 7.2 count()函数不工作

codeigniter 3 php 7.2 count()函数不工作,php,Php,我有这个功能 $arr = ($data['rajaongkir']['results']); for($i=0, $c = count($arr); $i < $c; $i++){ echo ($data['rajaongkir']['results'][$i]['name']); } $arr=($data['rajaongkir']['results']); 对于($i=0,$c=count($arr);$i

我有这个功能

$arr = ($data['rajaongkir']['results']);
for($i=0, $c = count($arr); $i < $c; $i++){
    echo ($data['rajaongkir']['results'][$i]['name']); 
}
$arr=($data['rajaongkir']['results']);
对于($i=0,$c=count($arr);$i<$c;$i++){
echo($data['rajaongkir']['results'][$i]['name']);
}
它在PHP5中为我工作,但在CodeIgniter3(PHP7.2)中出错。 我希望这个函数在PHP7.2中运行良好,请帮助我解决这个问题?
谢谢。

升级到PHP7.2后,您开始从
count
中得到错误的唯一原因是您试图计数的东西是不可计数的

根据循环中的代码,您希望
$data['rajaongkir']['results']
是一个数组,但是如果您现在从
count
中得到一个错误,那么它就不是

它被算作0,因为如果它大于0,循环就会执行,当您试图引用
$data['rajaongkir']['results'][$i]
时,您也会看到未定义的索引通知。我认为在收到警告的情况下,最有可能是
null
count(null)
将返回
0
,但会生成警告

count()现在将对传递给数组\u或\u countable参数的无效可数类型发出警告

无论如何,
count()
在那里是不必要的。您只需使用
foreach
循环,并在迭代之前检查数组是否确实是数组,因为
null
也不可迭代

if (is_array($arr)) {
    foreach($arr as $result) {
        echo $result['name'];
    }
}

if(is_array($arr)){
检查将阻止警告,但你确实需要找出为什么你期望的数组不是。你应该解决问题,而不是掩盖它。基于对“rajaongkir”的快速谷歌搜索,看起来该数组是来自web API的解码JSON响应,如果没有
结果
键,那么您的请求可能存在某种问题,您应该在代码中检测并处理该问题。

您可以编辑该问题以包含错误吗?在我看来,更直接的
foreach
将是一种更好的方法,特别是因为
$c=count($arr);
似乎完全多余,而且不管怎样,添加到文件顶部的代码都不正确在打开PHP标记(例如
和一小段代码)后进行测试时,该代码中没有任何
codeigniter
,但仍然得到相同的结果。我使用的这个函数以json的形式获取数据,结果相同?如果不再使用count,怎么会出现与count相关的错误?看起来很奇怪。。。