Maison  >  Questions et réponses  >  le corps du texte

Comment gérer array_shift() sur Null ?

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粉300541798P粉300541798210 Il y a quelques jours394

répondre à tous(2)je répondrai

  • P粉237029457

    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'$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)) {
    

    répondre
    0
  • P粉696146205

    P粉6961462052024-02-26 18:54:55

    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.

    répondre
    0
  • Annulerrépondre