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相关的错误?看起来很奇怪。。。