cari

Rumah  >  Soal Jawab  >  teks badan

Tajuk ditulis semula kepada: "Argumen tidak sah: Argumen yang dibekalkan kepada foreach() adalah tidak sah"

<p>Adalah perkara biasa bagi saya untuk berurusan dengan data yang boleh sama ada tatasusunan atau pembolehubah kosong dan suapan data itu kepada beberapa <kod>foreach</code>. </p> <pre class="brush:php;toolbar:false;">$values ​​​​= get_values(); foreach ($nilai sebagai $nilai){ ... }</pre> <p>Apabila anda memberikan data yang bukan tatasusunan untuk digunakan, anda akan menerima amaran: </p> <blockquote> <p>Amaran: Argumen tidak sah dibekalkan untuk foreach() dalam [...]</p> </blockquote> <p>Dengan mengandaikan bahawa fungsi <code>get_values()</code> tidak boleh difaktorkan semula untuk sentiasa mengembalikan tatasusunan (keserasian ke belakang, kod sumber tidak tersedia atau sebab lain), saya ingin tahu cara mengelakkan perkara ini amaran Apakah cara yang paling bersih dan paling berkesan: </p> <ul> <li>Hantar <kod>$nilai</kod> <li>Memulakan <kod>$nilai</kod> <li>Balut <kod>foreach</kod></li> dalam <kod>jika</kod> <li>Lain-lain (sila berikan cadangan)</li> </ul></p>
P粉546138344P粉546138344451 hari yang lalu432

membalas semua(2)saya akan balas

  • P粉635509719

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

    Bagaimana dengan ini? Ia lebih ringkas dan semuanya dalam satu baris.

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

    balas
    0
  • P粉517814372

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

    Secara peribadi, saya rasa ini adalah yang paling bersih - tidak pasti sama ada ia yang paling berkesan, maklumlah!

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

    Sebab keutamaan saya ialah ia tidak memperuntukkan tatasusunan kosong apabila anda tidak mempunyai sebarang kandungan sama sekali.

    balas
    0
  • Batalbalas