php 致命错误:未捕获的类型错误:count():参数#1($var)必须是可计数类型|数组,给定空值

4smxwvx5  于 2022-12-02  发布在  PHP
关注(0)|答案(7)|浏览(199)

在我安装**XAMPP 8(PHP 8)**之前,代码一直运行良好。

if(isset($_POST["submit"])){
    @$subject = $_POST['subject'];
    @$term = $_POST['term'];
    @$session = $_POST['session'];
    @$size = count($_POST['adm_num']);
    @$size = count($_POST['ca1']);
    @$size = count($_POST['ca2']);
    @$size = count($_POST['ca3']);

    $i = 0;
    while ($i < $size) {
        $ca1= $_POST['ca1'][$i];
        $ca2= $_POST['ca2'][$i];
        $ca3= $_POST['ca3'][$i];
        $adm_num = $_POST['adm_num'][$i];
    }
}
vsdwdz23

vsdwdz231#

您必须先使用array()定义变量,然后才能使用它。或

if (is_countable($aa) && count($aa) > 0) :
d5vmydt9

d5vmydt92#

PHP8.0上,强制类型是在Count上定义。

count((array)$XYZVariable);

试试这个代码

if(isset($_POST["submit"])){
    @$subject = $_POST['subject'];
    @$term = $_POST['term'];
    @$session = $_POST['session'];
    @$size = count((array)$_POST['adm_num']));
    @$size = count((array)$_POST['ca1']));
    @$size = count((array)$_POST['ca2']));
    @$size = count((array)$_POST['ca3']));

    $i = 0;
    while ($i < $size) {
        $ca1= $_POST['ca1'][$i];
        $ca2= $_POST['ca2'][$i];
        $ca3= $_POST['ca3'][$i];
        $adm_num = $_POST['adm_num'][$i];
    }
}
ua4mk5z4

ua4mk5z43#

轻松修复..

$ab = is_array($aa) ? count($aa) : 0 ;

谢谢

gijlo24d

gijlo24d4#

@$size = count($_POST['ca1']);

在PHP8中不能工作,您必须这样做

@$size = count((array)$_POST['ca1']);

剩下的时间都这样

nwsw7zdq

nwsw7zdq5#

引用count()的官方php文档:
计算数组中的所有元素或对象中的某些项目。
你得到的错误是很明显的。这四个变量($_POST['adm_num']$_POST['ca1']$_POST['ca2']$_POST['ca3'])中有一个不是数组或者更多。
你可以使用gettype()来找出变量的类型,它会告诉你哪个变量不包含数组,然后你可以把它改为array

  • P.s:你重写了$size变量三次。为什么?*
qyzbxkaa

qyzbxkaa6#

为了更容易更新PHP 8的代码,我制作了自己的函数

function count_($array) {
    return is_array($array) ? count($array) : 0;
}

然后我用count_($value)批量替换了count($value)

hmmo2u0o

hmmo2u0o7#

在道克上面写着:
返回值返回值中的元素数。当参数既不是数组也不是实现了Countable接口的对象时,将返回1。有一个例外,如果值为空,将返回0。
它看起来像一只虫子?!?

相关问题