PHP - Melintasi objek gagal jika nilai elemen bukan rentetan jenis
P粉769045426
P粉769045426 2023-07-30 18:07:04
0
1
520
<p>Saya mempunyai soalan mudah, tetapi tidak kira apa, saya tidak dapat mengetahui apa yang sedang berlaku. Saya mempunyai rentetan JSON yang kelihatan seperti ini: </p> <pre class="brush:php;toolbar:false;">{ "network_title": "Rangkaian", "class_title": "Kelas", "gred": [{ "number": "Pra-K", "label": "Pra-Tadika", "pesanan": 1, "id": "34567" }, { "nombor": "TK", "label": "Tadika Peralihan", "pesanan": 2, "id": "23456" }, { "nombor": "K", "label": "Tadika", "pesanan": 3, "id": "12345" }] }</pre> <p>Ia ditukar kepada tatasusunan seperti ini (atas sebab tertentu): </p> <pre class="brush:php;toolbar:false;">array:3 [ "network_title" => "class_title" => "Kelas" "gred" => tatasusunan:3 [ 0 => tatasusunan:4 [ "nombor" => "Pra-K" "label" => "Pra-Tadika" "pesanan" => "gid" => "aa71da69-93ab-11e9-bda9-06f442b19d06" ] 1 => tatasusunan:4 [ "nombor" => "TK" "label" => "Tadika Peralihan" "pesanan" => "gid" => "d3c6754a-6298-48d0-9afa-6a19bafb8464" ] 2 => tatasusunan:4 [ "nombor" => "K" "label" => "Tadika" "pesanan" => "gid" => "a815a771-9aff-4020-b7d2-0c95a05da21e" ] ] ]</pre> <p>Kemudian saya cuba mengulangi tatasusunan, dan apabila ia menjumpai elemen yang jenisnya bukan rentetan (seperti elemen tertib), ia mendapat argumen Tidak sah yang dibekalkan untuk ralat foreach(). Mesej ralat mengatakan bahawa baris foreach() bermasalah. Berikut ialah contoh kod: </p> <pre class="brush:php;toolbar:false;">foreach ($arrTree as $k => $v) { jika (is_string($v)) { //Buat sesuatu di sini } }</pre> <p>Saya pasti saya kehilangan sesuatu yang asas di sini, tetapi saya bosan mencari masalah. Terima kasih. </p>
P粉769045426
P粉769045426

membalas semua(1)
P粉615886660

Masalahnya ialah $arrTree ialah tatasusunan berbilang dimensi.

Gelung foreach dalam kod anda hanya merentasi tahap pertama tatasusunan, bukan tatasusunan bersarang (seperti "gred"). Apabila ia menemui "gred" nilai $v bukan rentetan tetapi tatasusunan, itulah sebabnya semakan is_string($v) gagal.

Anda perlu menambah gelung foreach bersarang untuk mengendalikan struktur ini.

Berikut ialah contoh yang menunjukkan cara untuk mencapai ini:

foreach ($arrTree as $k => $v)
{ 
    if (is_string($v)) 
    {
        //Do something here
    }
    else if (is_array($v))
    {
        foreach($v as $key => $value)
        {
            if(is_string($value))
            {
                //Do something here
            }
            else if(is_array($value))
            {
                foreach($value as $innerKey => $innerValue)
                {
                    if(is_string($innerValue))
                    {
                        //Do something here
                    }
                }
            }
        }
    }
} 
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!