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

Titre réécrit comme : "Les paramètres de la fonction foreach() sont invalides"

<p>Il m'est courant de traiter des données qui peuvent être soit un tableau, soit une variable vide, et de transmettre ces données à un <code>foreach</code>. </p> <pre class="brush:php;toolbar:false;">$values ​​​​= get_values(); foreach ($values ​​​​as $value){ ... }</pré> <p>Lorsque vous fournissez à foreach des données qui ne sont pas un tableau, vous recevrez un avertissement : </p> <blockquote> <p>Attention : argument non valide fourni dans foreach() dans [...]</p> </blockquote> <p>En supposant que la fonction <code>get_values()</code> ne peut pas être refactorisée pour toujours renvoyer un tableau (compatibilité ascendante, code source indisponible ou toute autre raison), j'aimerais savoir comment éviter ces avertissements Quelle est la manière la plus propre et la plus efficace :</p> <ul> <li>Convertir <code>$values</code> en un tableau</li> <li>Initialiser <code>$values</code> dans un tableau</li> <li>Enrouler <code>foreach</code></li> <li>Autre (veuillez fournir des suggestions)</li> </ul><p><br /></p>
P粉419164700P粉419164700448 Il y a quelques jours526

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

  • P粉811349112

    P粉8113491122023-08-22 10:58:44

    Et ça ? C'est plus concis et tout est sur une seule ligne.

    foreach ((array) $items as $item) {
     // ...
     }

    répondre
    0
  • P粉771233336

    P粉7712333362023-08-22 00:25:34

    Personnellement, je pense que c'est le plus propre - je ne sais pas si c'est le plus efficace, remarquez !

    if (is_array($values) || is_object($values))
    {
        foreach ($values as $value)
        {
            ...
        }
    }

    La raison de ma préférence est qu'il n'alloue pas de tableau vide lorsque vous n'avez rien pour commencer.

    répondre
    0
  • Annulerrépondre