Rumah pembangunan bahagian belakang masalah PHP Bagaimana untuk menukar data json ke array dalam php

Bagaimana untuk menukar data json ke array dalam php

Apr 24, 2023 pm 02:51 PM

Dalam pembangunan Web, teknologi JSON telah menjadi bahagian yang sangat diperlukan dan digunakan secara meluas dalam penghantaran dan penyimpanan data bahagian hadapan dan belakang. Dalam bahasa PHP, kita selalunya perlu menukar data JSON kepada tatasusunan untuk operasi dan pemprosesan. Artikel ini akan memperkenalkan anda kepada cara menukar JSON kepada tatasusunan.

1. Gunakan fungsi json_decode()

Dalam PHP, kita boleh menggunakan fungsi terbina dalam json_decode() untuk menghuraikan rentetan JSON ke dalam tatasusunan PHP. Penggunaan asas fungsi ini adalah seperti berikut:

1

mixed json_decode ( string $json [, bool $assoc = false [, int $depth = 512 [, int $options = 0 ]]] )

Salin selepas log masuk

Antaranya, parameter $json mewakili rentetan JSON untuk dihuraikan dan $assoc mewakili sama ada untuk menukar objek yang dihuraikan kepada tatasusunan dengan nama kunci . Lalai adalah palsu $depth mewakili kedalaman parsing, lalai ialah 512, $options mewakili pilihan parsing, lalai ialah 0.

Sebagai contoh, kami mempunyai rentetan JSON berikut:

1

{"name""Tom""age": 18, "hobbies": ["music""movies"]}

Salin selepas log masuk

Kami boleh menukarnya menjadi tatasusunan melalui kod PHP berikut:

1

2

3

$json '{"name": "Tom", "age": 18, "hobbies": ["music", "movies"]}';

$arr = json_decode($json, true);

print_r($arr);

Salin selepas log masuk

Outputnya ialah seperti berikut :

1

2

3

4

5

6

7

8

9

10

11

Array

(

    [name] => Tom

    [age] => 18

    [hobbies] => Array

        (

            [0] => music

            [1] => movies

        )

 

)

Salin selepas log masuk

2. Mengendalikan masalah biasa dalam penukaran

Dalam aplikasi sebenar, kami mungkin menghadapi masalah bahawa beberapa rentetan JSON tidak boleh ditukar dengan betul kepada tatasusunan dan penyelesaian mereka akan diterangkan.

  1. Rentetan JSON mengandungi aksara khas

Sebagai contoh, apabila rentetan JSON mengandungi aksara khas seperti petikan tunggal atau petikan berganda, program akan melaporkan ralat atau penukaran akan gagal. Pada masa ini, kita boleh mengelakkan situasi ini dengan melarikan diri dari rentetan. PHP menyediakan fungsi terbina dalam addslashes() untuk melarikan diri.

Contohnya:

1

2

3

4

$json '{"name": "Tom\'s book", "page": "100\""}';

$json addslashes($json);

$arr = json_decode($json, true);

print_r($arr);

Salin selepas log masuk

Hasil output adalah seperti berikut:

1

2

3

4

5

Array

(

    [name] => Tom's book

    [page] => 100"

)

Salin selepas log masuk
  1. Rentetan JSON mengandungi bahasa Cina

Apabila JSON Apabila rentetan mengandungi bahasa Cina, jika ia tidak diproses, ia akan menyebabkan kegagalan penukaran atau aksara bercelaru. PHP menyediakan fungsi terbina dalam json_encode() untuk menukar tatasusunan kepada rentetan JSON, dan parameter boleh ditetapkan untuk mengelakkan aksara Cina yang kacau.

Contohnya:

1

2

3

$arr array('name' => '张三''age' => 19);

$json = json_encode($arr, JSON_UNESCAPED_UNICODE);

echo $json;

Salin selepas log masuk

Atur cara akan mengeluarkan hasil berikut:

1

{"name":"张三","age":19}

Salin selepas log masuk

Apabila melakukan pemprosesan terbalik, anda perlu menggunakan aksara JSON dalam UTF-8 rentetan format pengekodan, jika tidak, aksara bercelaru juga akan berlaku.

  1. Ralat format rentetan JSON

Apabila format rentetan JSON tidak betul, fungsi json_decode() tidak akan dapat menghuraikan rentetan dengan betul. Pada masa ini, kita perlu melakukan pengesahan format terlebih dahulu pada rentetan JSON, dan kemudian membetulkannya mengikut jenis ralat yang berbeza.

Contohnya:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

$json '[{"name": "Tom", "age": 18}, {"name": "Bob", "age":19}';

$arr = json_decode($json, true);

if (json_last_error() !== JSON_ERROR_NONE) {

    switch (json_last_error()) {

        case JSON_ERROR_DEPTH:

            echo 'JSON字符串超出最大剖析深度';

            break;

        case JSON_ERROR_STATE_MISMATCH:

            echo 'JSON字符串格式错误';

            break;

        case JSON_ERROR_UTF8:

            echo 'JSON字符串包含非UTF-8字符';

            break;

        default:

            echo 'JSON字符串解析失败';

            break;

    }

else {

    print_r($arr);

}

Salin selepas log masuk

Hasil output adalah seperti berikut:

1

JSON字符串格式错误

Salin selepas log masuk

Di atas ialah kaedah untuk menukar JSON kepada tatasusunan dan penyelesaian kepada pelbagai masalah. Saya harap artikel ini dapat membantu pembangun PHP.

Atas ialah kandungan terperinci Bagaimana untuk menukar data json ke array dalam php. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

Tag artikel panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Apakah amalan terbaik untuk deduplikasi tatasusunan php Apakah amalan terbaik untuk deduplikasi tatasusunan php Mar 03, 2025 pm 04:41 PM

Apakah amalan terbaik untuk deduplikasi tatasusunan php

Bolehkah PHP Array Deduplication memanfaatkan keunikan nama utama? Bolehkah PHP Array Deduplication memanfaatkan keunikan nama utama? Mar 03, 2025 pm 04:51 PM

Bolehkah PHP Array Deduplication memanfaatkan keunikan nama utama?

Adakah Deduplication Array PHP perlu dipertimbangkan untuk kerugian prestasi? Adakah Deduplication Array PHP perlu dipertimbangkan untuk kerugian prestasi? Mar 03, 2025 pm 04:47 PM

Adakah Deduplication Array PHP perlu dipertimbangkan untuk kerugian prestasi?

Apakah piawaian pengekodan PHP terkini dan amalan terbaik? Apakah piawaian pengekodan PHP terkini dan amalan terbaik? Mar 10, 2025 pm 06:16 PM

Apakah piawaian pengekodan PHP terkini dan amalan terbaik?

Apakah teknik pengoptimuman untuk deduplikasi tatasusunan php Apakah teknik pengoptimuman untuk deduplikasi tatasusunan php Mar 03, 2025 pm 04:50 PM

Apakah teknik pengoptimuman untuk deduplikasi tatasusunan php

Bagaimana saya bekerja dengan sambungan php dan pecl? Bagaimana saya bekerja dengan sambungan php dan pecl? Mar 10, 2025 pm 06:12 PM

Bagaimana saya bekerja dengan sambungan php dan pecl?

Bagaimana untuk melaksanakan beratur mesej (RabbitMQ, Redis) dalam PHP? Bagaimana untuk melaksanakan beratur mesej (RabbitMQ, Redis) dalam PHP? Mar 10, 2025 pm 06:15 PM

Bagaimana untuk melaksanakan beratur mesej (RabbitMQ, Redis) dalam PHP?

Bagaimana menggunakan refleksi untuk menganalisis dan memanipulasi kod PHP? Bagaimana menggunakan refleksi untuk menganalisis dan memanipulasi kod PHP? Mar 10, 2025 pm 06:12 PM

Bagaimana menggunakan refleksi untuk menganalisis dan memanipulasi kod PHP?

See all articles