Maison > Questions et réponses > le corps du texte
Veuillez jeter un oeil à ce code :
$end = isset($newvar) ? array($newvar) : null; while($ends = array_shift($end)){ ...
Quand j'utilise PHP 7.2
时运行良好,但升级到 8.1
ça lance :
Erreur fatale PHP : Uncaught TypeError : array_shift() : le paramètre n°1 ($array) doit être de type tableau, donné null dans /path/to/qanda.php:469
Une idée pour résoudre ce problème ?
P粉2370294572024-02-26 19:37:09
La solution la plus basique consiste à remplacer la valeur null
par un tableau vide pour respecter les exigences de type :
$end = isset($newvar) ? array($newvar) : []; while($ends = array_shift($end)){
Vous pouvez également créer un tableau et utiliser l'$newvar
opérateur de coalescence nul sur :
$end = [$newvar ?? null]; while($ends = array_shift($end)){
Mais je ne comprends pas pourquoi vous créeriez un tableau avec une seule valeur, puis créeriez une boucle en utilisant la valeur de retour de array_shift
. Le corps de la boucle ne s'exécutera qu'une seule fois.
Peut-être simplement utiliser un conditionnel ?
if (isset($newvar)) {
P粉6961462052024-02-26 18:54:55
Utilisez simplement un tableau vide :
$end = isset($newvar) ? array($newvar) : [];
array_shift renverra un tableau null
vide en entrée lors du premier appel, donc la boucle ne s'exécutera pas.