Jadual Kandungan
Apakah tatasusunan berbilang dimensi dan tatasusunan satu dimensi
Tukar tatasusunan berbilang dimensi kepada tatasusunan satu dimensi
Kaedah 1: Gunakan fungsi rekursif
Kaedah 2: Gunakan array_walk_recursive function
Satu tatasusunan -dimensi kepada tatasusunan berbilang dimensi
Kaedah: Gunakan fungsi array_reduce
Kesimpulan
Rumah pembangunan bahagian belakang masalah PHP Bagaimana untuk menukar tatasusunan berbilang dimensi kepada tatasusunan satu dimensi dalam PHP

Bagaimana untuk menukar tatasusunan berbilang dimensi kepada tatasusunan satu dimensi dalam PHP

Apr 27, 2023 am 09:07 AM

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
    )
);
Salin selepas log masuk

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");
Salin selepas log masuk

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;
}
Salin selepas log masuk

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);
Salin selepas log masuk

Hasil output ialah:

Array
(
    [Tom] => 95
    [Jerry] => 84
    [John] => 88
)
Salin selepas log masuk
Salin selepas log masuk

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;
}
Salin selepas log masuk

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);
Salin selepas log masuk

Hasil output ialah:

Array
(
    [Tom] => 95
    [Jerry] => 84
    [John] => 88
)
Salin selepas log masuk
Salin selepas log masuk

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;
}
Salin selepas log masuk

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"),
);
Salin selepas log masuk

menjadi tatasusunan berbilang dimensi mengikut kekunci "kumpulan":

$result = group_array($data, "group");
print_r($result);
Salin selepas log masuk

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
                )

        )

)
Salin selepas log masuk

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!

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

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

AI Hentai Generator

AI Hentai Generator

Menjana ai hentai secara percuma.

Artikel Panas

R.E.P.O. Kristal tenaga dijelaskan dan apa yang mereka lakukan (kristal kuning)
1 bulan yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Tetapan grafik terbaik
1 bulan yang lalu By 尊渡假赌尊渡假赌尊渡假赌
Akan R.E.P.O. Ada Crossplay?
1 bulan yang lalu By 尊渡假赌尊渡假赌尊渡假赌

Alat 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)

PHP 8 JIT (Just-in-Time) Penyusunan: Bagaimana ia meningkatkan prestasi. PHP 8 JIT (Just-in-Time) Penyusunan: Bagaimana ia meningkatkan prestasi. Mar 25, 2025 am 10:37 AM

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.

OWASP Top 10 PHP: Huraikan dan mengurangkan kelemahan umum. OWASP Top 10 PHP: Huraikan dan mengurangkan kelemahan umum. Mar 26, 2025 pm 04:13 PM

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.

Penyulitan PHP: Penyulitan simetri vs asimetrik. Penyulitan PHP: Penyulitan simetri vs asimetrik. Mar 25, 2025 pm 03:12 PM

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.

PHP Secure File Muat naik: Mencegah kelemahan berkaitan fail. PHP Secure File Muat naik: Mencegah kelemahan berkaitan fail. Mar 26, 2025 pm 04:18 PM

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.

Pengesahan PHP & amp; Kebenaran: Pelaksanaan selamat. Pengesahan PHP & amp; Kebenaran: Pelaksanaan selamat. Mar 25, 2025 pm 03:06 PM

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.

PHP CSRF Perlindungan: Bagaimana untuk mencegah serangan CSRF. PHP CSRF Perlindungan: Bagaimana untuk mencegah serangan CSRF. Mar 25, 2025 pm 03:05 PM

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

Bagaimana anda mengambil data dari pangkalan data menggunakan PHP? Bagaimana anda mengambil data dari pangkalan data menggunakan PHP? Mar 20, 2025 pm 04:57 PM

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

Apakah tujuan penyataan yang disediakan dalam PHP? Apakah tujuan penyataan yang disediakan dalam PHP? Mar 20, 2025 pm 04:47 PM

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

See all articles