Heim > Fragen und Antworten > Hauptteil
Bitte schauen Sie sich diesen Code an:
$end = isset($newvar) ? array($newvar) : null; while($ends = array_shift($end)){ ...
Wenn ich PHP 7.2
时运行良好,但升级到 8.1
verwende, wird Folgendes angezeigt:
Schwerwiegender PHP-Fehler: Uncaught TypeError: array_shift(): Parameter #1 ($array) muss vom Typ Array sein, angegeben als Null in /path/to/qanda.php:469
Irgendeine Idee, wie man das Problem beheben kann?
P粉2370294572024-02-26 19:37:09
最基本的解决方案是将 null
值替换为空数组,以符合类型要求:
$end = isset($newvar) ? array($newvar) : []; while($ends = array_shift($end)){
您还可以创建数组并在 $newvar
上使用空合并运算符:
$end = [$newvar ?? null]; while($ends = array_shift($end)){
但我不明白为什么您要创建一个具有单个值的数组,然后使用 array_shift
的返回值创建一个循环。循环体只会运行一次。
也许只是使用一个条件?
if (isset($newvar)) {
P粉6961462052024-02-26 18:54:55
只需使用空数组即可:
$end = isset($newvar) ? array($newvar) : [];
array_shift 将在第一次调用时返回 null
空数组作为输入,因此循环不会执行。