Json dalam PHP biasanya merupakan perkara yang sangat biasa bagi sesetengah pembangun yang berpengalaman. Apabila memproses data json dalam PHP, anda selalunya perlu menggunakan beberapa operasi pada tatasusunan, seperti memproses pasangan nilai kunci. Walau bagaimanapun, kadangkala, kita menghadapi situasi sedemikian: memproses struktur bukan tatasusunan data json, jadi bagaimana kita menentukan kunci?
Mari kita lihat beberapa asas pemprosesan data json dalam PHP.
Memproses json dalam PHP biasanya dibahagikan kepada dua arah: menukar tatasusunan PHP kepada rentetan json dan menukar rentetan json kepada tatasusunan PHP.
Pertama, mari kita lihat pada penukaran tatasusunan kepada json. Dalam PHP, terdapat fungsi yang sangat berguna json_encode
yang boleh menukar tatasusunan PHP kepada rentetan format json.
Sebagai contoh, katakan kita mempunyai tatasusunan berikut:
$arr = array("name" => "Tom", "age" => 28, "gender" => "male");
Jika kita ingin menukar tatasusunan ini kepada json, kita boleh menulis seperti ini:
$jsonStr = json_encode($arr); echo $jsonStr;
Hasil keluaran:
{"name":"Tom","age":28,"gender":"male"}
Anda boleh lihat di sini bahawa tatasusunan PHP asal telah berjaya ditukar kepada rentetan format json. Pada masa yang sama, anda juga boleh melihat bahawa data JSON ialah struktur pasangan nilai kunci.
Seterusnya, mari kita lihat pada penukaran json kepada tatasusunan. Dalam PHP, terdapat fungsi yang sangat berguna json_decode
yang boleh menukar rentetan format json kepada tatasusunan PHP.
Sebagai contoh, katakan kita mempunyai data json berikut (dengan andaian kita menyimpan rentetan json yang dijana dalam contoh sebelumnya ke dalam fail data.json
):
{"name":"Tom","age":28,"gender":"male"}
Jika kita mahu membaca Data json ini ditukar kepada tatasusunan PHP, yang boleh ditulis seperti ini:
$jsonStr = file_get_contents("data.json"); $arr = json_decode($jsonStr, true); var_dump($arr);
Hasil keluaran:
array(3) { ["name"] => string(3) "Tom" ["age"] => int(28) ["gender"] => string(4) "male" }
Seperti yang anda lihat, rentetan format json asal telah berjaya ditukar kepada tatasusunan PHP.
Selain itu, jika kita hanya perlu mendapatkan satu daripada nilai, kita biasanya menggunakan kaedah yang serupa dengan yang berikut untuk mendapatkan nilai yang sepadan menggunakan kunci tatasusunan:
echo $arr['name']; // 输出 Tom
Walau bagaimanapun , kita Kembali kepada soalan asal: Anggapkan bahawa struktur data json yang kita baca adalah seperti berikut:
{ "status":1, "data":{ "name":"Tom", "age":28, "gender":"male" } }
Pada masa ini, jika kita ingin mengeluarkan nilai name
, apakah yang akan kita lakukan?
Biasanya, kita akan memikirkan kod berikut:
$jsonStr = file_get_contents("data.json"); $arr = json_decode($jsonStr, true); echo $arr['data']['name'];
Walau bagaimanapun, kod tersebut akan menyebabkan ralat Notis:
Notis: Indeks tidak ditentukan: data dalam .. .
Ini kerana PHP berpendapat bahawa $arr
ialah tatasusunan, tetapi kami cuba mengakses data
seperti tatasusunan dalam data JSON, dan ia akan dikenali sebagai rentetan dan bukannya tatasusunan.
Untuk menyelesaikan masalah ini, kita perlu menggunakan $arr->data->name
untuk menentukan kunci:
$jsonStr = file_get_contents("data.json"); $obj = json_decode($jsonStr); echo $obj->data->name;
supaya output yang betul ialah: Tom
. Di sini, ambil perhatian bahawa objek yang kami cipta adalah daripada jenis stdClass
, bukan jenis tatasusunan, jadi kami perlu menggunakan $obj->data->name
untuk menentukan kunci.
Untuk meringkaskan, apabila kami memproses data JSON dengan struktur bukan tatasusunan, kami perlu menggunakan objek dan bukannya tatasusunan. Pada masa yang sama, kami juga boleh menggunakan kaedah ini untuk melintasi data JSON berstruktur bukan tatasusunan.
Atas ialah kandungan terperinci Bagaimana untuk memproses data json dalam php. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!