$lts = mysqli_fetch_all($con->query($query), MYSQLI_NUM);
for($i=0; $i<count($lts); $i++){
for($j=0; $j<count($lts[$i]); $j++){
$lts[$i]=$lts[$i][$j];
}
}
这是$ lts var_dump:
array (size=2)
0 => string '20' (length=2)
1 => string '21' (length=2)
给我这个警告
参数必须是实现Countable
的数组或对象
从PHP7.1升级到7.2时就发生了这种情况。知道怎么解决吗?
答案 0 :(得分:1)
问题是,第一次通过内部循环,您将$lts[$i]
替换为$lts[$i][$j]
。当循环重复时,它会测试$j < count($lts[$i])
。但$lts[$i]
不再是数组,而是行第一列的值,因此您会收到此错误。
您可以通过在循环之前将count($lts[$i])
分配给变量来解决此问题。但这只会引发另一个问题。当您在后续迭代中尝试$lts[$i] = $lts[$i][$j]
时,$lts[$i]
仍然不是数组,因此没有$j
元素。
您可以使用foreach
代替for
来解决这个问题,因为它会复制它循环的数组。
for($i=0; $i<count($lts); $i++){
foreach ($lts[$i] as $col)
$lts[$i] = $col;
}
}
但目前尚不清楚内循环的意义。每次迭代都会用下一列覆盖$lts[$i]
,因此最终结果将只是最后一列。你可以在没有内循环的情况下做到这一点。
foreach ($lts as &$row) {
$row = end($row);
}
或简单地说:
$lts = array_map('end', $lts);
答案 1 :(得分:1)
警告:count():参数必须是数组或对象, 实现Countable in /var/www/html/wp-content/themes/office/admin/functions/functions.mediauploader.php 在第127行
第127行已更改...
if ( count( $_posts ) ) {
到
if(is_array($ _posts)){
答案 2 :(得分:-1)
创建一个新函数来替换计数
function count2($x) {
return is_array($x) ? count($x) : 0;
}