在我安装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];
}
}
Run Code Online (Sandbox Code Playgroud)
mah*_*dam 56
在使用变量之前,必须使用 array() 定义变量。或者
if (is_countable($aa) && count($aa) > 0) :
Run Code Online (Sandbox Code Playgroud)
Sum*_*tel 24
在PHP8.0上,强制类型是在 Count 上定义的。
count((array)$XYZVariable);
Run Code Online (Sandbox Code Playgroud)
试试这个代码
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];
}
}
Run Code Online (Sandbox Code Playgroud)
Alo*_*Jha 11
轻松修复..
$ab = is_array($aa) ? count($aa) : 0 ;
Run Code Online (Sandbox Code Playgroud)
谢谢
小智 7
@$size = count($_POST['ca1']);
Run Code Online (Sandbox Code Playgroud)
在 PHP 8 中是行不通的,你必须这样做
@$size = count((array)$_POST['ca1']);
Run Code Online (Sandbox Code Playgroud)
并为其余部分执行此操作
小智 7
为了更轻松地更新 PHP8 的代码,我制作了自己的函数
function count_($array) {
return is_array($array) ? count($array) : 0;
}
Run Code Online (Sandbox Code Playgroud)
然后我将 count($value) 替换为 count_($value)
引用count()的官方 php 文档:
计算数组中的所有元素或对象中的某些元素。
您收到的错误非常明显。$_POST['adm_num']这四个变量( 、$_POST['ca1']、$_POST['ca2']、 )之一$_POST['ca3']不是数组或可能更多。
您可以使用gettype()找出变量的类型。它会告诉您哪个变量不包含数组。您可以将其更改为array.
Ps:你重写了你的$size变量三次。这是为什么?