我收到一个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函数。
评论前必须登录!
注册