


Bagaimana untuk menukar tatasusunan berbilang dimensi kepada tatasusunan satu dimensi dalam PHP
Menukar tatasusunan berbilang dimensi dan tatasusunan satu dimensi dalam PHP bukanlah operasi yang sukar. Matlamat ini boleh dicapai dengan mudah dengan menggunakan beberapa fungsi dengan betul.
Apakah tatasusunan berbilang dimensi dan tatasusunan satu dimensi
Dalam PHP, tatasusunan ialah jenis data yang sangat berguna dan biasa digunakan, dan sering digunakan dalam pembangunan sebenar. Selain menyediakan operasi biasa untuk menyimpan dan mengakses elemen, tatasusunan PHP juga membenarkan penggunaan tatasusunan berbilang dimensi dan tatasusunan satu dimensi, yang digunakan untuk menyimpan data struktur kompleks dan beberapa data ringkas masing-masing.
Tatasusunan berbilang dimensi bermaksud tatasusunan lain bersarang di dalam tatasusunan, iaitu, unsur tatasusunan juga merupakan tatasusunan, tetapi setiap tatasusunan mesti mempunyai kunci unik secara logik. Sebagai contoh, tatasusunan berbilang dimensi yang digunakan untuk menyimpan gred tiga kursus boleh diwakili sebagai:
$score = array( "math" => array( "Tom" => 89, "Jerry" => 92, "John" => 76 ), "english" => array( "Tom" => 78, "Jerry" => 85, "John" => 91 ), "science" => array( "Tom" => 95, "Jerry" => 84, "John" => 88 ) );
manakala tatasusunan satu dimensi merujuk kepada tatasusunan di mana setiap elemen mengandungi hanya satu nilai, yang boleh rentetan, nombor, nilai Boolean, dsb. Kekunci tatasusunan satu dimensi boleh berupa rentetan atau nombor, tetapi nilai kekunci berangka mestilah integer atau nombor titik terapung. Contohnya:
$fruit = array("apple", "orange", "banana", "pear");
Tukar tatasusunan berbilang dimensi kepada tatasusunan satu dimensi
Tukar tatasusunan berbilang dimensi kepada tatasusunan satu dimensi ialah operasi yang sangat biasa, untuk sesetengah operasi yang memerlukan pengisihan, membandingkan , pencarian dan operasi lain pada elemen tatasusunan berbilang dimensi Secara umumnya, lebih mudah untuk menggunakan tatasusunan satu dimensi. Berikut memperkenalkan dua kaedah untuk menukar tatasusunan berbilang dimensi kepada tatasusunan satu dimensi.
Kaedah 1: Gunakan fungsi rekursif
Rekursi ialah kaedah yang sangat berkuasa yang membolehkan kami mengendalikan banyak tugas dengan mudah, termasuk memproses tatasusunan berbilang dimensi yang kompleks. Dengan menggunakan fungsi rekursif untuk menukar tatasusunan berbilang dimensi kepada tatasusunan satu dimensi, anda boleh mengurangkan bilangan peringkat dalam tatasusunan secara beransur-ansur dan akhirnya memindahkan semua elemen ke dalam tatasusunan satu dimensi yang baharu. Perlaksanaan khusus adalah seperti berikut:
function multi_to_one($multi_arr) { static $result_arr = array(); foreach ($multi_arr as $key => $val) { if (is_array($val)) { multi_to_one($val); } else { $result_arr[$key] = $val; } } return $result_arr; }
Dalam fungsi ini, kami melelang melalui setiap elemen Jika kami mendapati bahawa elemen semasa ialah tatasusunan, maka kami melakukan operasi rekursif padanya sehingga elemen itu tidak lagi tatasusunan; jika tidak, kami Menambah elemen semasa pada tatasusunan statik $result_arr
yang ditakrifkan dalam fungsi. Akhir sekali, kami mengembalikan tatasusunan satu dimensi yang diproses.
Gunakan fungsi ini untuk menukar tatasusunan berbilang dimensi $score
di atas kepada tatasusunan satu dimensi:
$result = multi_to_one($score); print_r($result);
Hasil output ialah:
Array ( [Tom] => 95 [Jerry] => 84 [John] => 88 )
Kaedah 2: Gunakan array_walk_recursive function
Terdapat fungsi array_walk_recursive
khusus digunakan untuk merentasi tatasusunan dalam PHP, yang boleh merentasi setiap elemen dalam tatasusunan berbilang dimensi. Fungsi ini boleh menerima fungsi panggil balik sebagai parameter kedua, di mana kita boleh memanipulasi elemen dan menambahnya pada tatasusunan satu dimensi baharu. Berikut ialah pelaksanaan khusus:
function flatten_array($multi_arr) { $result_arr = array(); array_walk_recursive($multi_arr, function($val, $key) use (&$result_arr) { $result_arr[$key] = $val; }); return $result_arr; }
Berbanding dengan kaedah pertama, kaedah ini menggunakan fungsi tanpa nama untuk menyelesaikan operasi panggil balik Fungsi ini menggunakan kata kunci use
untuk memperkenalkan pembolehubah luaran $result_arr
dan Simpan elemen yang diproses dalam tatasusunan ini. Akhirnya, tatasusunan satu dimensi yang dijana dikembalikan.
Menggunakan fungsi ini, anda juga boleh menukar tatasusunan berbilang dimensi di atas $score
kepada tatasusunan satu dimensi:
$result = flatten_array($score); print_r($result);
Hasil output ialah:
Array ( [Tom] => 95 [Jerry] => 84 [John] => 88 )
Satu tatasusunan -dimensi kepada tatasusunan berbilang dimensi
Menukar tatasusunan satu dimensi kepada tatasusunan berbilang dimensi juga merupakan keperluan yang sangat biasa Dalam aplikasi praktikal, tatasusunan satu dimensi perlu dikumpulkan mengikut syarat tertentu. Berikut menerangkan kaedah untuk menukar tatasusunan satu dimensi kepada tatasusunan berbilang dimensi.
Kaedah: Gunakan fungsi array_reduce
array_reduce
ialah fungsi tertib tinggi dalam PHP Ia boleh merentasi tatasusunan seperti array_walk_recursive
, tetapi tidak seperti array_walk_recursive
, array_reduce
Anda. juga boleh menerima parameter sebagai nilai awal fungsi, dan nilai ini akan menjadi nilai awal setiap fungsi panggil balik dan dihantar kepada mereka. array_reduce
boleh digunakan untuk pelbagai jenis pengiraan dan operasi pemprosesan, dan kami boleh menggunakannya untuk menukar tatasusunan satu dimensi kepada tatasusunan berbilang dimensi.
Berikut ialah pelaksanaan khusus:
function group_array($data_arr, $group_key) { $result_arr = array_reduce($data_arr, function(&$result, $item) use ($group_key) { $index = $item[$group_key]; if (!isset($result[$index])) { $result[$index] = array(); } $result[$index][] = $item; return $result; }, array()); return $result_arr; }
Dalam fungsi ini, kami menggunakan fungsi tanpa nama untuk melaksanakan fungsi panggil balik semasa merentasi tatasusunan, jika nilai $group_key
elemen semasa belum ditambah lagi Kepada tatasusunan berbilang dimensi baharu, kami mencipta elemen tatasusunan baharu sebagai kuncinya, dan kemudian menambah elemen semasa kepada nilai tatasusunan baharu ini. Semasa keseluruhan proses, parameter pertama $result
fungsi panggil balik akan terus diubah suai dan diluluskan sehingga akhirnya tatasusunan pemilihan berbilang dimensi yang diproses dikembalikan.
Gunakan fungsi ini untuk menukar tatasusunan satu dimensi:
$data = array( array("id" => 1, "name" => "Tom", "group" => "A"), array("id" => 2, "name" => "Jerry", "group" => "A"), array("id" => 3, "name" => "John", "group" => "B"), array("id" => 4, "name" => "Smith", "group" => "C"), );
menjadi tatasusunan berbilang dimensi mengikut kekunci "kumpulan":
$result = group_array($data, "group"); print_r($result);
Hasil output ialah:
Array ( [A] => Array ( [0] => Array ( [id] => 1 [name] => Tom [group] => A ) [1] => Array ( [id] => 2 [name] => Jerry [group] => A ) ) [B] => Array ( [0] => Array ( [id] => 3 [name] => John [group] => B ) ) [C] => Array ( [0] => Array ( [id] => 4 [name] => Smith [group] => C ) ) )
Kesimpulan
Penukaran tatasusunan berbilang dimensi dan tatasusunan satu dimensi dalam PHP ialah keperluan yang sering kita hadapi dalam pembangunan harian. Kita boleh menggunakan fungsi rekursif atau fungsi tertib lebih tinggi untuk menukar tatasusunan berbilang dimensi kepada tatasusunan satu dimensi atau menukar tatasusunan satu dimensi kepada tatasusunan berbilang dimensi. Dalam aplikasi praktikal, kita perlu memilih kaedah yang berbeza mengikut situasi yang berbeza dan menggunakan fungsi yang sesuai untuk melengkapkan penukaran.
Atas ialah kandungan terperinci Bagaimana untuk menukar tatasusunan berbilang dimensi kepada tatasusunan satu dimensi dalam PHP. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Alat AI Hot

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

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

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

AI Hentai Generator
Menjana ai hentai secara percuma.

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)

Topik panas



Kompilasi JIT Php 8 meningkatkan prestasi dengan menyusun kod yang sering dilaksanakan ke dalam kod mesin, memberi manfaat kepada aplikasi dengan pengiraan berat dan mengurangkan masa pelaksanaan.

Artikel ini membincangkan kelemahan OWASP 10 dalam strategi PHP dan mitigasi. Isu -isu utama termasuk suntikan, pengesahan yang rosak, dan XSS, dengan alat yang disyorkan untuk memantau dan mendapatkan aplikasi PHP.

Artikel ini membincangkan penyulitan simetri dan asimetrik dalam PHP, membandingkan kesesuaian, prestasi, dan perbezaan keselamatan mereka. Penyulitan simetri lebih cepat dan sesuai untuk data pukal, manakala asimetrik digunakan untuk pertukaran utama yang selamat.

Artikel ini membincangkan mendapatkan muat naik fail PHP untuk mengelakkan kelemahan seperti suntikan kod. Ia memberi tumpuan kepada pengesahan jenis fail, penyimpanan selamat, dan pengendalian ralat untuk meningkatkan keselamatan aplikasi.

Artikel ini membincangkan pelaksanaan pengesahan dan kebenaran yang mantap dalam PHP untuk mencegah akses yang tidak dibenarkan, memperincikan amalan terbaik dan mengesyorkan alat peningkatan keselamatan.

Artikel ini membincangkan strategi untuk mencegah serangan CSRF di PHP, termasuk menggunakan token CSRF, kuki tapak yang sama, dan pengurusan sesi yang betul.

Artikel membincangkan mendapatkan data dari pangkalan data menggunakan PHP, meliputi langkah, langkah keselamatan, teknik pengoptimuman, dan kesilapan umum dengan penyelesaian.

Kenyataan yang disediakan dalam PHP meningkatkan keselamatan pangkalan data dan kecekapan dengan mencegah suntikan SQL dan meningkatkan prestasi pertanyaan melalui kompilasi dan penggunaan semula.
