第一行是问题代码。我不知道如何将计数更改为可以工作的数字。
if(count($item[2]) > 0){
if($item[2][0] == 'plane' || $item[2][0] == 'url'){
if($item[2][0] == 'url'){
$arr = explode('file/d/',$id);
$arr1 = explode('/',$arr[1]);
$id = $arr1[0];
}
}
}
?>
答案 0 :(得分:2)
在PHP 7.2
中,尝试计算不可数事物时添加了警告。要解决此问题,请更改此行:
if(count($item[2]) > 0){
与此:
if(is_array($item[2]) && count($item[2]) > 0){
在PHP 7.3
中,添加了一个新功能is_countable
,专门用于解决E_WARNING
问题。如果您使用的是PHP 7.3
,则可以更改以下行:
if(count($item[2]) > 0){
与此:
if(is_countable($item[2]) && count($item[2]) > 0){
答案 1 :(得分:0)
我认为在某些情况下,此$item[2]
返回null
或任何其他不可数的值。从PHP 7开始,您将无法计算未实现可计数的对象。因此,您需要先检查它是否为数组:
if(is_countable($item[2])){ // you can also use is_array($item[2])
if(count($item[2]) > 0){
//rest of your code
}
}
另一种方法(尽管不是首选)是将对象传递给ArrayIterator
。这将使其可迭代:
$item_2 = new ArrayIterator($item[2]);
if(count($item_2) > 0){
//rest of your code
}
答案 2 :(得分:0)
请尝试以下代码:
if (is_array($item[2]) || $item[2] instanceof Countable || is_object($item[2])) {
if(count($item[2]) > 0){
if($item[2][0] == 'plane' || $item[2][0] == 'url'){
if($item[2][0] == 'url'){
$arr = explode('file/d/',$id);
$arr1 = explode('/',$arr[1]);
$id = $arr1[0];
}
}
}
}
选中it