


Tutorial mengenai kumpulan dan membuat data JSON mengikut kategori dalam PHP
Oct 12, 2025 am 09:15 AM1. Memahami struktur data JSON dan penyahkodan PHP
Dalam pembangunan web, JSON (JavaScript Object Notation) adalah format pertukaran data ringan yang digunakan secara meluas untuk penghantaran data depan dan back-end. PHP menyediakan fungsi terbina dalam untuk memproses data JSON.
Katakan kami mempunyai array JSON yang mengandungi maklumat mengenai pelbagai artikel. Setiap artikel mempunyai tiga bidang: "artikel" (pautan), "kategori" (kategori) dan "tajuk" (tajuk). Matlamat kami adalah untuk mengumpulkan artikel -artikel ini dengan "kategori" dan menjadikannya di laman web.
Contoh data json:
[ { "Artikel": "https://example.com/cat2-article1", "Kategori": "Cat2", "Tajuk": "1 Title Cat2" }, { "Artikel": "https://example.com/cat1-article1", "Kategori": "Cat1", "Tajuk": "1 Title Cat1" }, { "Artikel": "https://example.com/cat1-article2", "Kategori": "Cat1", "Tajuk": "2 Title Cat1" }, { "Artikel": "https://example.com/cat2-article2", "Kategori": "Cat2", "Tajuk": "2 Title Cat2" }, { "Artikel": "https://example.com/cat1-article3", "Kategori": "Cat1", "Tajuk": "Tajuk 3 Cat1" } ]
Dalam PHP, kami menggunakan fungsi JSON_DECODE () untuk menukar rentetan JSON ke dalam pembolehubah PHP. Apabila parameter kedua ditetapkan kepada benar, ia mengembalikan array bersekutu; Jika tidak, objek dikembalikan. Untuk keperluan tutorial ini, array bersekutu lebih mudah untuk bekerja dengan.
Php $ json = '[{ "Artikel": "https://example.com/cat2-article1", "Kategori": "Cat2", "Tajuk": "1 Title Cat2" }, { "Artikel": "https://example.com/cat1-article1", "Kategori": "Cat1", "Tajuk": "1 Title Cat1" }, { "Artikel": "https://example.com/cat1-article2", "Kategori": "Cat1", "Tajuk": "2 Title Cat1" }, { "Artikel": "https://example.com/cat2-article2", "Kategori": "Cat2", "Tajuk": "2 Title Cat2" }, { "Artikel": "https://example.com/cat1-article3", "Kategori": "Cat1", "Tajuk": "Tajuk 3 Cat1" }] '; // decode json rentetan ke dalam array bersekutu php $ value = json_decode ($ json, true); // Periksa sama ada penyahkodan berjaya dan jenis data jika (json_last_error ()! == json_error_none) { Echo "Kesalahan Decoding JSON:". json_last_error_msg (); keluar; } jika (! is_array ($ nilai)) { echo "Data yang dikodkan bukanlah array."; keluar; } ?>
2. Data kumpulan mengikut kategori
Nilai $ decoded adalah array yang mengandungi pelbagai artikel artikel bersekutu. Untuk memaparkan mengikut kategori, kita perlu berulang melalui array ini dan membina struktur data baru di mana setiap kunci mewakili kategori dan nilainya adalah array yang mengandungi semua artikel dalam kategori tersebut.
Php // ... (data JSON sebelumnya dan kod penyahkodan) ... $ res = []; // Digunakan untuk menyimpan data foreach yang dikelompokkan ($ nilai sebagai entri $) { $ kategori = $ entri ['kategori']; // Dapatkan kategori artikel semasa // Jika kategori ini belum dalam array hasil, buat array kosong untuk menyimpan artikel di bawah kategori ini jika (! Array_key_exists ($ kategori, $ res)) { $ res [$ kategori] = []; } // Tambah artikel semasa ke pelbagai kategori yang sepadan $ res [$ kategori] [] = $ entry; } // Pada masa ini, struktur array $ res adalah kira -kira seperti berikut: // [ // "cat2" => [ // ["artikel" => "...", "kategori" => "cat2", "title" => "..."], // ["artikel" => "...", "kategori" => "cat2", "tajuk" => "..."] //], // "cat1" => [ // ["artikel" => "...", "kategori" => "cat1", "tajuk" => "..."], // ["artikel" => "...", "kategori" => "cat1", "tajuk" => "..."], // ["artikel" => "...", "kategori" => "cat1", "tajuk" => "..."] //] //] ?>
3. Memberi data dikumpulkan ke HTML
Sebaik sahaja data dikumpulkan, langkah seterusnya adalah untuk menjadikannya ke halaman HTML. Ini biasanya melibatkan gelung foreach bersarang: gelung luar melepasi kategori, dan gelung dalaman melepasi artikel di bawah setiap kategori.
Apabila memberi, anda perlu memberi perhatian untuk mengakses artikel (pautan) dan tajuk (tajuk) medan setiap artikel. Kesalahan yang mungkin dalam soalan asal cuba mengakses pembolehubah gelung luar dalam gelung dalaman, atau menggunakan nama kunci yang salah.
<twite> Paparan Klasifikasi Artikel <yaya> badan {font-family: arial, sans-serif; Margin: 20px; } H1 {Color: #333; Sempadan-Bottom: 2PX Solid #eee; Padding-Bottom: 5px; Margin-top: 30px; } p {margin: 5px 0; } p.article-link {color: #007BFF; } p.article-title {font-weight: bold; } Php // ... (data JSON sebelumnya, penyahkodan dan kod kumpulan) ... // melintasi data dikumpulkan dan diberikan ke html foreach ($ res sebagai $ kategori => $ entry_list) :?> <h1> = htmlspecialchars ($ kategori); ?> </h1> php foreach ($ entry_list as $ artikel) :?> <p class="artikel-link"> <a href="<?%20=%20htmlspecialchars%20(%24%20artikel%20%5B'artikel'%5D);?>" target="_ blank"> = htmlspecialchars ($ artikel ['artikel']); ?> </a> </p> <p class="article-title"> = htmlspecialchars ($ artikel ['title']); ?> </p> php endforeach; ?> php endforeach; ?> </yaya></twite>
Penjelasan dan Nota Kod:
- HTMLSPECIALCHARS (): Adalah penting untuk menggunakan fungsi htmlspecialchars () apabila mengeluarkan sebarang data yang mungkin datang dari sumber luaran atau pengguna ke HTML, untuk mencegah serangan skrip lintas tapak (XSS).
- Penamaan Variabel: Dalam gelung dalaman, $ entry_list adalah pelbagai artikel di bawah kategori semasa, dan $ artikel adalah pelbagai artikel individu dalam $ entry_list. Oleh itu, apabila mengakses pautan dan tajuk artikel, $ artikel ['artikel'] dan $ artikel ['tajuk'] harus digunakan. Ini adalah titik kesilapan yang biasa dalam soalan asal, iaitu penyalahgunaan pembolehubah atau kekunci yang salah dalam gelung luar.
- Struktur HTML: Kod sampel menggunakan tag
untuk memaparkan nama kategori, tag, dan
tag untuk memaparkan pautan dan tajuk artikel untuk menyediakan struktur yang jelas.
4. Kod Contoh Lengkap
Berikut adalah fail PHP lengkap yang mengintegrasikan semua langkah dan boleh dijalankan secara langsung untuk melihat kesannya:
<twite> Paparan Klasifikasi Artikel <yaya> badan {font-family: arial, sans-serif; Margin: 20px; } H1 {Color: #333; Sempadan-Bottom: 2PX Solid #eee; Padding-Bottom: 5px; Margin-top: 30px; } p {margin: 5px 0; } p.article-link {color: #007BFF; } p.article-title {font-weight: bold; } Php $ json = '[{ "Artikel": "https://example.com/cat2-article1", "Kategori": "Cat2", "Tajuk": "1 Title Cat2" }, { "Artikel": "https://example.com/cat1-article1", "Kategori": "Cat1", "Tajuk": "1 Title Cat1" }, { "Artikel": "https://example.com/cat1-article2", "Kategori": "Cat1", "Tajuk": "2 Title Cat1" }, { "Artikel": "https://example.com/cat2-article2", "Kategori": "Cat2", "Tajuk": "2 Title Cat2" }, { "Artikel": "https://example.com/cat1-article3", "Kategori": "Cat1", "Tajuk": "Tajuk 3 Cat1" }] '; // 1. DECODE DATA JSON $ VALUES = JSON_DECODE ($ JSON, TRUE); // pengendalian ralat jika (json_last_error ()! == json_error_none) { echo "<p style="'color:" red> json decoding ralat:". json_last_error_msg (). "</p>"; keluar; } jika (! is_array ($ nilai)) { echo "<p style="'color:" red> Data decoded bukan array. </p>"; keluar; } // 2. Data kumpulan mengikut kategori $ res = []; foreach ($ nilai sebagai entri $) { $ kategori = $ entri ['kategori']; jika (! array_key_exists ($ kategori, $ res)) { $ res [$ kategori] = []; } $ res [$ kategori] [] = $ entry; } // 3. Memberi data dikumpulkan ke html foreach ($ res sebagai $ kategori => $ entry_list) :?> <h1> = htmlspecialchars ($ kategori); ?> </h1> php foreach ($ entry_list as $ artikel) :?> <p class="artikel-link"> <a href="<?%20=%20htmlspecialchars%20(%24%20artikel%20%5B'artikel'%5D);?>" target="_ blank"> = htmlspecialchars ($ artikel ['artikel']); ?> </a> </p> <p class="article-title"> = htmlspecialchars ($ artikel ['title']); ?> </p> php endforeach; ?> php endforeach; ?> </yaya></twite>
Meringkaskan
Tutorial ini menunjukkan proses lengkap pemprosesan data JSON dalam PHP: daripada menggunakan fungsi JSON_DECODE untuk menukar rentetan JSON ke dalam pelbagai PHP yang beroperasi, untuk mengumpulkan data dengan kunci tertentu (seperti "kategori") melalui penghakiman dan penghakiman bersyarat, dan akhirnya membuat data berkumpulan ke halaman HTML dengan cara yang jelas dan selamat melalui loops. Memahami corak pemprosesan data ini adalah penting untuk membina aplikasi web yang dinamik, membantu pemaju menyusun dan mempersembahkan set data kompleks dengan berkesan. Dalam perkembangan sebenar, adalah penting untuk memberi perhatian kepada keselamatan pengendalian ralat dan kandungan output untuk meningkatkan keteguhan permohonan dan keupayaannya untuk menentang serangan yang berpotensi.
Atas ialah kandungan terperinci Tutorial mengenai kumpulan dan membuat data JSON mengikut kategori dalam PHP. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Alat AI Hot

Undress AI Tool
Gambar buka pakaian secara percuma

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Stock Market GPT
Penyelidikan pelaburan dikuasakan AI untuk keputusan yang lebih bijak

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

UseFilter_var () TOVALIDATEMailSyntaxandCheckDnsrr () TOVERIFYDOnMAINMXRECORDS.example: $ e -mel = "user@example.com"; if (filter_var ($ e -mel, filter_email) && checkDnsrr (expode '

UseUnserialize (Serialize ($ obj)) fordeepcopyingWhenallDataisserizable; jika tidak, pelaksanaan__clone () tomanuallyduplicatenestedObjectsandavoidsharedReferences.

UseArray_Merge () toCombineArrays, OverwritingDuplicateStringKeySandreIndexingNumericKeys; forsimplerconcatenation, terutamaInphp5.6, usethesplatoperator [... $ array1, ... $ array2].

Namespacesinphporganizecodeandpreventnamingnamingconflictsbygroupinglasses, antara muka, fungsi, dan constantsunderaspecificname.2.defineAnamespaceusingthenamespaceywordetopofafile, diikuti olehbythenamespaceakenam

Toupdateadatabaserecordinphp, firstConnectusingPdoormySqli, thenusePePreparedStatementStoExecuteAseCureSqlupDateQuery.example: $ pdo = newpdo ("mysql: host = localhost; dbName = your_database: $ userbase: $ userbase"

The__call () methodistriggeredWhenaninaccessibleorundefinedmethodiscalledonanObject, membolehkanCustomHandlylyAccepteThemeThodnamnamnamnents, asshownwhencallingundefinedmethodslikesayhello ()

Gunakan kelas ziparchive untuk membuat fail zip. Pertama instantiate dan buka zip sasaran, tambahkan fail dengan addfile, menyokong laluan dalaman tersuai, fungsi rekursif boleh membungkus seluruh direktori, dan akhirnya memanggil dekat untuk menyimpan untuk memastikan bahawa PHP mempunyai kebenaran menulis.

UsePathinfo ($ FileName, pathinfo_extension) togetthefileextension; itreliLyHandlesmultipledotsandgecases, returnTheExtension (mis., "Pdf") Oranemptystringifnoneexists.
