Tajuk ditulis semula kepada: "Argumen tidak sah: Argumen yang dibekalkan kepada foreach() adalah tidak sah"
P粉546138344
P粉546138344 2023-08-21 12:14:09
0
2
442
<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粉546138344
P粉546138344

membalas semua(2)
P粉635509719

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

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

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.

Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan