个性化阅读
专注于IT技术分析

如何避免在看起来有效的数组上出现php Countable错误

我收到一个php count()错误, “Warning: count(): Parameter must be an array or an object that implements Countable”, 这显然是数组。该代码仍然有效, 但是我想知道如何重新编码以避免警告消息。

首先, 我有一个多维数组(print_f dump):

$icons Array
(
[0] => Array
    (
        [image] => 12811
        [label] => Chemical
        [categories] => Array
            (
                [0] => 209
            )

    )

[1] => Array
    (
        [image] => 12812
        [label] => Cut
        [categories] => Array
            (
                [0] => 236
            )

    )

[2] => Array
    (
        [image] => 12813
        [label] => Flame
        [categories] => Array
            (
                [0] => 256
                [1] => 252
            )

    )
)

我正在将Wordpress术语与图像匹配:

<?php 
$terms = wp_get_post_terms( get_the_ID(), 'product_categories', array("fields" => "ids"));
if($icons) {

foreach($icons as $row) {
    for($i=0; $i<count($row['categories']); $i++) {
        for($j=0; $j<count($terms); $j++) {
            if($row['categories'][$i]==$terms[$j]) {
                       array_push($icon_img_ary, $row['image']);
                                $icon_img_ary_unq=wg_unique_array($icon_img_ary);
                       }
                }
          }
      }
}
} ?>

在对嵌套数组进行计数时, 该错误发生在第一个for()循环中。实际上, 我已经使用这个相同的代码已有几个月了, 在两个单独的文档上有两个实例。我只在其中一个文档中收到此错误。我一直在努力尝试理解为什么数组不以数组形式键入。

我已经看到一些讨论的解决方案, 它们在条件条件下使用数组变量&& count($ array)?这就像是一种全新的语法, 然后在后续的’;’上抛出错误。或{}个字符。非常令人困惑, 我正在尝试了解。任何帮助将不胜感激, 谢谢!


#1


如果使用的是PHP 7.3, 则可以使用is_countable(), 否则可以使用is_array()。

对于PHP 7.3或更高版本:

<?php 
$terms = wp_get_post_terms( get_the_ID(), 'product_categories', array("fields" => "ids"));
if($icons) {

    foreach($icons as $row) {
        if ( is_countable( $row['categories'] ) ) {
            for($i=0; $i<count($row['categories']); $i++) {
                for($j=0; $j<count($terms); $j++) {
                    if($row['categories'][$i]==$terms[$j]) {
                        array_push($icon_img_ary, $row['image']);
                        $icon_img_ary_unq=wg_unique_array($icon_img_ary);
                    }
                }
            }
        }
    }
}
?>

对于低于PHP 7.3的版本:

<?php 
$terms = wp_get_post_terms( get_the_ID(), 'product_categories', array("fields" => "ids"));
if($icons) {

    foreach($icons as $row) {
        if ( is_array( $row['categories'] ) ) {
            for($i=0; $i<count($row['categories']); $i++) {
                for($j=0; $j<count($terms); $j++) {
                    if($row['categories'][$i]==$terms[$j]) {
                        array_push($icon_img_ary, $row['image']);
                        $icon_img_ary_unq=wg_unique_array($icon_img_ary);
                    }
                }
            }
        }
    }
}
?>

#2


如果不确定是否可以对有问题的变量使用count, 则可以使用is_countable函数。

赞(0)
未经允许不得转载:srcmini » 如何避免在看起来有效的数组上出现php Countable错误

评论 抢沙发

评论前必须登录!