Comment gérer array_shift() sur Null ?
P粉300541798
P粉300541798 2024-02-25 22:27:30
0
2
397

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粉300541798
P粉300541798

répondre à tous(2)
P粉237029457

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'$newvaropé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粉696146205

Utilisez simplement un tableau vide :

$end = isset($newvar) ? array($newvar) : [];

array_shift renverra un tableau nullvide en entrée lors du premier appel, donc la boucle ne s'exécutera pas.

Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!