Wordpress错误:警告:count():参数必须是实现Countable的数组或对象

时间:2019-12-16 08:44:53

标签: php

第一行是问题代码。我不知道如何将计数更改为可以工作的数字。

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];
        }
   }
 }
?>

3 个答案:

答案 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