Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimana untuk menukar tatasusunan satu dimensi dalam php

Bagaimana untuk menukar tatasusunan satu dimensi dalam php

王林
王林asal
2023-05-19 18:40:38432semak imbas

Tukar kepada tatasusunan dua dimensi?

Dalam pengaturcaraan PHP, kadangkala adalah perlu untuk menukar tatasusunan satu dimensi kepada tatasusunan dua dimensi, supaya pemprosesan dan paparan data boleh menjadi lebih mudah. Sebagai contoh, kumpulkan data dalam tatasusunan satu dimensi mengikut peraturan tertentu dan masukkannya ke dalam tatasusunan dua dimensi untuk memudahkan statistik dan analisis. Artikel ini akan memperkenalkan cara menukar tatasusunan satu dimensi kepada tatasusunan dua dimensi dalam PHP, dan cara mengumpulkan dan mengisih data.

  1. Gunakan fungsi array_chunk() untuk menukar

PHP menyediakan fungsi yang dipanggil array_chunk(), yang boleh membahagikan array kepada berbilang tatasusunan kecil, setiap kecil Tatasusunan mengandungi bilangan elemen yang ditentukan. Antaranya, parameter $size mewakili bilangan elemen yang terkandung dalam setiap tatasusunan kecil, dan parameter $preserve_keys menentukan sama ada untuk mengekalkan nama kunci tatasusunan asal. Gunakan fungsi ini untuk menukar tatasusunan satu dimensi kepada tatasusunan dua dimensi. Berikut ialah contoh kod:

<?php
$original_array = array('a', 'b', 'c', 'd', 'e', 'f');
$chunked_array = array_chunk($original_array, 2);  // 将原数组按每2个元素分为一个小数组
print_r($chunked_array);
?>

Keluaran kod di atas adalah seperti berikut:

Array
(
    [0] => Array
        (
            [0] => a
            [1] => b
        )

    [1] => Array
        (
            [0] => c
            [1] => d
        )

    [2] => Array
        (
            [0] => e
            [1] => f
        )

)

Melalui fungsi array_chunk(), kami membahagikan tatasusunan asal kepada tiga tatasusunan kecil, setiap satu kecil tatasusunan mengandungi dua elemen. Ini menukar tatasusunan satu dimensi kepada tatasusunan dua dimensi.

  1. Gunakan untuk gelung untuk menukar

Selain menggunakan fungsi array_chunk(), kita juga boleh menggunakan gelung untuk melengkapkan proses penukaran ini. Berikut ialah contoh kod:

<?php
$original_array = array('a', 'b', 'c', 'd', 'e', 'f');
$chunked_array = array();
$chunk_size = 2;  // 每个小数组包含元素数量
$chunk_count = ceil(count($original_array) / $chunk_size);  // 小数组数量
for ($i = 0; $i < $chunk_count; $i++) {
    $chunked_array[$i] = array_slice($original_array, $i * $chunk_size, $chunk_size);
}
print_r($chunked_array);
?>

Keluaran kod di atas adalah sama dengan hasil penggunaan fungsi array_chunk() di atas. Dalam contoh ini, kita mula-mula mengira bilangan tatasusunan kecil, dan kemudian gunakan fungsi for loop dan array_slice() untuk memisahkan tatasusunan asal dan menyimpannya dalam tatasusunan $chunked_array.

  1. Kumpulkan dan isih data

Selepas menukar tatasusunan satu dimensi kepada tatasusunan dua dimensi, kami boleh mengumpulkan dan mengisih data mengikut keperluan kami sendiri. Berikut ialah contoh kod:

<?php
$original_array = array(
    array('name' => '张三', 'age' => 18, 'gender' => '男'),
    array('name' => '李四', 'age' => 21, 'gender' => '女'),
    array('name' => '王五', 'age' => 22, 'gender' => '男'),
    array('name' => '赵六', 'age' => 19, 'gender' => '女')
);
$chunked_array = array_chunk($original_array, 2);  // 将原数组按每2个元素分为一个小数组
$sorted_array = array();
foreach ($chunked_array as $chunk) {
    $sorted_chunk = array();
    foreach ($chunk as $item) {
        $sorted_chunk[(int)$item['age']][] = $item;
    }
    ksort($sorted_chunk);
    $sorted_array[] = $sorted_chunk;
}
print_r($sorted_array);
?>

Kod di atas mentakrifkan tatasusunan satu dimensi $original_array yang mengandungi empat elemen Setiap elemen ialah tatasusunan bersekutu yang mengandungi tiga pasangan nilai kunci: nama, umur dan jantina. Kami membahagikan tatasusunan asal kepada tatasusunan kecil mengikut setiap dua elemen, dan mengisih elemen dalam tatasusunan kecil mengikut umur Akhirnya, kami mendapat tatasusunan dua dimensi $sorted_array, yang strukturnya adalah seperti berikut:

Array
(
    [0] => Array
        (
            [18] => Array
                (
                    [0] => Array
                        (
                            [name] => 张三
                            [age] => 18
                            [gender] => 男
                        )

                )

            [19] => Array
                (
                    [0] => Array
                        (
                            [name] => 赵六
                            [age] => 19
                            [gender] => 女
                        )

                )

        )

    [1] => Array
        (
            [21] => Array
                (
                    [0] => Array
                        (
                            [name] => 李四
                            [age] => 21
                            [gender] => 女
                        )

                )

            [22] => Array
                (
                    [0] => Array
                        (
                            [name] => 王五
                            [age] => 22
                            [gender] => 男
                        )

                )

        )

)
<.> Lulus Dalam kod di atas, kami mengisih elemen dalam kumpulan yang sama mengikut umur dan meletakkan hasil akhir ke dalam tatasusunan $sorted_array.

Ringkasan

Artikel ini memperkenalkan kaedah menukar tatasusunan satu dimensi kepada tatasusunan dua dimensi dalam PHP, termasuk menggunakan fungsi array_chunk() dan gelung untuk penukaran, dan seterusnya memperkenalkan bagaimana untuk mengumpulkan data dan menyusun. Dalam proses pengaturcaraan sebenar, kita boleh memilih kaedah yang berbeza untuk pemprosesan dan paparan data mengikut keperluan kita sendiri.

Atas ialah kandungan terperinci Bagaimana untuk menukar tatasusunan satu dimensi dalam php. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
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