PHP - Melintasi objek gagal jika nilai elemen bukan rentetan jenis
P粉769045426
P粉769045426 2023-07-30 18:07:04
0
1
413

Saya mempunyai soalan mudah, tetapi tidak kira apa, saya tidak dapat mengetahui apa yang sedang berlaku. Saya mempunyai rentetan JSON yang kelihatan seperti ini:

{ "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" }] }

Ia ditukar kepada tatasusunan seperti ini (atas sebab tertentu):

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" ] ] ]

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:

foreach ($arrTree as $k => $v) { jika (is_string($v)) { //Buat sesuatu di sini } }

Saya pasti saya kehilangan sesuatu yang asas di sini, tetapi saya bosan mencari masalah. Terima kasih.

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!