Dalam pembangunan Web, JSON (JavaScript Object Notation) telah menjadi format data yang biasa digunakan. Ia mudah difahami dan dihuraikan Semakin ramai pengaturcara juga memilih untuk menggunakan JSON untuk penghantaran dan penyimpanan data.
Dalam pembangunan PHP, kadangkala kita perlu menukar tatasusunan kepada format JSON, yang memerlukan penggunaan fungsi terbina dalam json_encode
dalam PHP. Walau bagaimanapun, kadangkala kita perlu menukar tatasusunan kompleks Pada masa ini, kita perlu menyambung tatasusunan, dan kemudian menukar hasil yang disambungkan ke dalam format JSON.
Mula-mula, kita perlu menyambung tatasusunan untuk menukar tatasusunan berbilang dimensi kepada tatasusunan satu dimensi. Kita boleh menyelesaikan masalah ini secara rekursif. Pelaksanaan khusus adalah seperti berikut:
function array_flatten($array) { $result = array(); foreach($array as $value) { if(is_array($value)) { $result = array_merge($result, array_flatten($value)); } else { $result[] = $value; } } return $result; }
Kod di atas menggunakan kaedah rekursif untuk menukar tatasusunan kepada tatasusunan satu dimensi Antaranya, is_array($value)
menentukan sama ada nilai semasa masih merupakan tatasusunan , jika ya, teruskan pemprosesan rekursif, jika tidak, tambahkan elemen pada tatasusunan $result
.
Tatasusunan yang disambung telah ditukar kepada tatasusunan satu dimensi, dan seterusnya ia perlu ditukar kepada format JSON. Kita boleh terus menggunakan fungsi json_encode
untuk penukaran Pelaksanaan khusus adalah seperti berikut:
function array_to_json($array) { $array = array_flatten($array); $json = json_encode($array, JSON_UNESCAPED_UNICODE); return $json; }
Dalam kod di atas, $array = array_flatten($array)
menukar tatasusunan berbilang dimensi kepada tatasusunan satu dimensi dan menukar tatasusunan kepada format JSON, di mana , json_encode($array, JSON_UNESCAPED_UNICODE)
bermakna pengekodan Unikod tidak diperlukan, sekali gus mengekalkan aksara Cina. JSON_UNESCAPED_UNICODE
function array_flatten($array) { $result = array(); foreach($array as $value) { if(is_array($value)) { $result = array_merge($result, array_flatten($value)); } else { $result[] = $value; } } return $result; } function array_to_json($array) { $array = array_flatten($array); $json = json_encode($array, JSON_UNESCAPED_UNICODE); return $json; } $array = array( array('name' => '张三', 'age' => 20, 'sex' => '男'), array('name' => '李四', 'age' => 25, 'sex' => '女'), array('name' => '王五', 'age' => 30, 'sex' => '男', 'children' => array('儿子', '女儿')), ); echo array_to_json($array);
[ "张三", 20, "男", "李四", 25, "女", "王五", 30, "男", "儿子", "女儿" ]
untuk menukar tatasusunan kepada format JSON. json_encode
dalam rangka kerja Laravel
boleh terus menukar tatasusunan ke dalam format JSON dan mengeluarkannya, yang lebih ringkas dan pantas. response()->json()
Atas ialah kandungan terperinci Tukar tatasusunan php kepada json. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!