在我安装XAMPP 8 (PHP 8)之前,代码一直运行良好。
$size = count($_POST['adm_num']);
但现在它抛出“参数 #1 ($var) 必须是 Countable|array 类型,给定 null”错误。
如果数组可能不存在,您可以在计数之前检查其存在和类型,然后设置默认值或返回错误(如果需要数组)
if (isset($_POST['adm_num']) && is_countable($aa)) {
$size = count($_POST['adm_num']);
} else {
$size = 0;
// http_response_code(400);
// die("adm_num must be present and be of type array");
}
如果此时必须定义数组,则此错误意味着您的代码中出现了某些问题,您必须对其进行调试,检查该数组的源。
在 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];
}
}
轻松修复..
$ab = is_array($aa) ? count($aa) : 0 ;
谢谢
@$size = count($_POST['ca1']);
在 PHP 8 中不起作用,你必须这样做
@$size = count((array)$_POST['ca1']);
其余部分也这样做
为了更轻松地更新 PHP8 的代码,我制作了自己的函数
function count_($array) {
return is_array($array) ? count($array) : 0;
}
然后我将 count($value) 大规模替换为 count_($value)
在文档中说:
返回值 返回 value 中的元素数量。当参数既不是数组也不是实现了 Countable 接口的对象时,将返回 1。有一个例外,如果 value 为 null,则返回 0。
看起来像是一个错误?!?