recherche

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

Titre réécrit comme suit : "Argument invalide : l'argument fourni à foreach() n'est pas valide"

<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 des données qui ne sont pas un tableau à foreach, vous recevrez un avertissement : </p> <blockquote> <p>Avertissement : argument non valide fourni pour 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 autres raisons), j'aimerais savoir comment les éviter. avertissements Quelle est la manière la plus propre et la plus efficace : </p> <ul> <li>Transformer <code>$values</code> en 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>
P粉546138344P粉546138344503 Il y a quelques jours471

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

  • P粉635509719

    P粉6355097192023-08-22 10:45:45

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

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

    répondre
    0
  • P粉517814372

    P粉5178143722023-08-22 09:35:52

    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 aucun contenu.

    répondre
    0
  • Annulerrépondre