Rumah > pembangunan bahagian belakang > masalah PHP > kaedah pembalikan tatasusunan php

kaedah pembalikan tatasusunan php

PHPz
Lepaskan: 2023-05-11 10:55:06
asal
3012 orang telah melayarinya

Artikel ini akan memperkenalkan kaedah pembalikan tatasusunan php.

Dalam PHP, tatasusunan ialah salah satu jenis data yang paling biasa, yang boleh menyimpan berbilang nilai. Melaksanakan operasi membalikkan tatasusunan adalah salah satu keperluan biasa. Berikut menunjukkan beberapa kaedah berbeza untuk melaksanakan operasi pembalikan tatasusunan php.

Kaedah 1: fungsi array_reverse()

PHP menyediakan array_reverse() fungsi terbina dalam untuk membalikkan tatasusunan Fungsi ini mengembalikan tatasusunan baharu di mana unsur tatasusunan asal berada susunan terbalik. Contohnya:

$arr = array(1, 2, 3, 4, 5);
$reversedArr = array_reverse($arr);
print_r($reversedArr);
Salin selepas log masuk

Hasil keluaran menjalankan kod di atas ialah:

Array
(
    [0] => 5
    [1] => 4
    [2] => 3
    [3] => 2
    [4] => 1
)
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk

Fungsi ini juga boleh memilih untuk mengekalkan atau menetapkan semula nama kunci tatasusunan. Parameter kedua adalah pilihan dan nilai lalainya adalah palsu, yang bermaksud nama kunci tidak dikekalkan. Jika nilainya benar, nama kunci dikekalkan.

$arr = array("one" => 1, "two" => 2, "three" => 3, "four" => 4, "five" => 5);
$reversedArr = array_reverse($arr, true);
print_r($reversedArr);
Salin selepas log masuk

Hasil output ialah:

Array
(
    [five] => 5
    [four] => 4
    [three] => 3
    [two] => 2
    [one] => 1
)
Salin selepas log masuk

Kaedah 2: untuk gelung

Kendalian pembalikan tatasusunan juga boleh dilaksanakan menggunakan gelung for. Kita boleh menggunakan dua penunjuk, satu di permulaan dan satu di penghujung tatasusunan, gerakkan dua penunjuk dalam gelung dan menukar elemen dengan sewajarnya. Pelaksanaan khusus adalah seperti berikut:

$arr = array(1, 2, 3, 4, 5);
$len = count($arr);
for ($i = 0; $i < $len / 2; $i++) {
    $temp = $arr[$i];
    $arr[$i] = $arr[$len - $i - 1];
    $arr[$len - $i - 1] = $temp;
}
print_r($arr);
Salin selepas log masuk

Hasil output ialah:

Array
(
    [0] => 5
    [1] => 4
    [2] => 3
    [3] => 2
    [4] => 1
)
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk

Kaedah 3: Gunakan fungsi array_reduce() dan nama kunci tatasusunan terbalik

Kita juga boleh menggunakan array_reduce () fungsi Balikkan tatasusunan. Fungsi array_reduce() menerima tatasusunan boleh lelar dan boleh menggunakan fungsi panggil balik untuk melaksanakan operasi seperti penjumlahan, penapisan dan transformasi pada setiap elemen. Berikut ialah contoh pembalikan tatasusunan:

$arr = array(1, 2, 3, 4, 5);
$reversedArr = array_reduce(array_keys($arr), function ($acc, $key) use ($arr) {
    $acc[$key] = $arr[count($arr) - 1 - $key];
    return $acc;
}, []);
print_r($reversedArr);
Salin selepas log masuk

Hasil keluarannya ialah:

Array
(
    [0] => 5
    [1] => 4
    [2] => 3
    [3] => 2
    [4] => 1
)
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk

Kod di atas menggunakan fungsi array_keys() untuk mendapatkan nama kunci tatasusunan dan mengambilnya sebagai parameter pertama Dihantar kepada fungsi array_reduce() untuk digunakan dalam pelaksanaan fungsi panggil balik. Fungsi panggil balik seterusnya menggunakan nama kunci untuk mengira indeks terbalik tatasusunan, dengan itu membalikkan tatasusunan. Parameter $acc ialah penumpuk yang nilainya sentiasa tatasusunan, dengan nilai awal ialah tatasusunan kosong [].

Seperti yang anda lihat, menggunakan fungsi array_reduce() untuk mencapai pembalikan tatasusunan agak rumit. Tetapi fungsi ini sangat berguna apabila berurusan dengan operasi tatasusunan lain.

Kaedah 4: Gunakan fungsi array_multisort() dan array_column()

Cara terakhir untuk melaksanakan operasi pembalikan tatasusunan ialah menggunakan ciri PHP untuk mengendalikan tatasusunan berbilang dimensi. Mula-mula kita boleh menggunakan fungsi array_multisort() untuk mengisih indeks ganjil dan genap bebas dalam susunan terbalik mengikut indeks tatasusunan. Kemudian, gunakan fungsi array_column() untuk menukar tatasusunan kembali menjadi tatasusunan tunggal. Pelaksanaan khusus adalah seperti berikut:

$arr = array(1, 2, 3, 4, 5);
$n = count($arr);
for ($i = 0; $i < $n; $i++) {
    if ($i % 2 == 0) {
        $even[] = $arr[$i];
    } else {
        $odd[] = $arr[$i];
    }
}
array_multisort(array_reverse($odd), SORT_NUMERIC, array_reverse($even), SORT_NUMERIC);
$reversedArr = array_column(array($even, $odd), 0);
print_r($reversedArr);
Salin selepas log masuk

Hasil output ialah:

Array
(
    [0] => 5
    [1] => 4
    [2] => 3
    [3] => 2
    [4] => 1
)
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk

Kod di atas menyimpan indeks ganjil dan indeks genap dalam dua tatasusunan masing-masing $ganjil dan $genap. Seterusnya, gunakan fungsi array_multisort() untuk mengisih dua tatasusunan dalam susunan terbalik, dan akhirnya gunakan fungsi array_column() untuk menukar tatasusunan dua dimensi kepada tatasusunan tunggal.

Ringkasan

Artikel ini membincangkan empat cara berbeza untuk melaksanakan operasi pembalikan tatasusunan dalam PHP. Antaranya, fungsi array_reverse() ialah kaedah yang paling mudah dan langsung. Kaedah gelung for agak mudah untuk dikendalikan, tetapi tidak secekap fungsi array_reverse(). Melaksanakan pembalikan tatasusunan menggunakan fungsi array_reduce() adalah agak rumit, tetapi fungsi ini sangat berguna apabila bekerja dengan operasi tatasusunan lain. Akhir sekali, kami menunjukkan pendekatan berdasarkan fungsi array_multisort() dan array_column() untuk melaksanakan operasi pembalikan tatasusunan dengan memanfaatkan keupayaan PHP untuk mengendalikan tatasusunan multidimensi.

Atas ialah kandungan terperinci kaedah pembalikan tatasusunan php. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan