Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimana untuk mengganggu susunan tatasusunan dalam php tetapi mengekalkan subskrip tidak berubah

Bagaimana untuk mengganggu susunan tatasusunan dalam php tetapi mengekalkan subskrip tidak berubah

PHPz
PHPzasal
2023-04-27 15:37:34750semak imbas

Dalam pengaturcaraan PHP, kita sering menghadapi senario di mana kita perlu mengganggu susunan elemen tatasusunan, seperti perlu mengisih set nombor rawak atau perlu mencuba set data secara rawak. Secara umumnya, kita boleh menggunakan fungsi shuffle() yang disertakan dengan PHP untuk mengocok elemen tatasusunan, tetapi fungsi ini akan mengubah nilai utama elemen, menyebabkan subskrip susunan tatasusunan asal berubah, dengan itu memusnahkan yang asal struktur data. Artikel ini akan memperkenalkan kaedah untuk melaksanakan shuffling tatasusunan PHP tanpa mengubah susunan subskrip tatasusunan.

Pelaksanaan Kaedah

Untuk mencapai shuffling tatasusunan PHP tanpa mengubah subskrip susunan tatasusunan, kita boleh menggunakan kaedah yang serupa dengan algoritma shuffling, iaitu menyalin semua elemen tatasusunan ke tatasusunan baharu dan menjana susunan isihan baharu secara rawak. Kemudian lelaran ke atas tatasusunan asal dan isikan elemennya ke dalam tatasusunan baharu satu demi satu dalam susunan baharu. Dengan cara ini, susunan subskrip tatasusunan asal tidak berubah, tetapi susunan isihan elemen tatasusunan telah diacakkan. Kod PHP adalah seperti berikut:

function shuffleArray($arr) {
// Copy array
$newArr = $arr;

// Isih rawak
shuffle ($newArr );

// Traverse array asal
foreach ($arr as $key => $value) {

// 将元素按照新顺序填充到新数组中
$arr[$key] = $newArr[$key];

}

// Kembalikan tatasusunan baharu
kembalikan $arr;
}

Fungsi ini menerima tatasusunan input $arr dan mengembalikan tatasusunan baharu dalam susunan kocok. Dalam pelaksanaan, kami mula-mula menggunakan $newArr = $arr untuk menyalin sepenuhnya tatasusunan asal ke dalam tatasusunan baharu untuk mengelakkan masalah yang mungkin disebabkan oleh rujukan. Seterusnya, kami menggunakan fungsi shuffle() PHP untuk mengisih tatasusunan baharu secara rawak. Akhir sekali, kami mengulangi tatasusunan asal, mengisi elemennya ke dalam tatasusunan baharu satu demi satu dalam susunan baharu dan mengembalikan tatasusunan baharu.

Kebaikan dan keburukan kaedah ini

Menggunakan kaedah di atas boleh mencapai shuffling tatasusunan PHP tanpa mengubah susunan subskrip tatasusunan asal Ia mempunyai kelebihan berikut:

  1. Menggunakan PHP Pelaksanaan fungsi shuffle() terbina dalam adalah ringkas dan mudah difahami.
  2. Dengan menyalin sepenuhnya tatasusunan asal ke tatasusunan baharu, potensi masalah yang disebabkan oleh rujukan boleh dielakkan, menjadikan kod itu lebih mantap.
  3. Ia mempunyai pelbagai aplikasi, tanpa mengambil kira struktur data dan bilangan elemen tatasusunan asal, dan sesuai untuk sebarang jenis tatasusunan.

Walau bagaimanapun, kaedah ini juga mempunyai kelemahan berikut:

  1. Dalam pelaksanaan, tatasusunan tambahan perlu digunakan untuk menyimpan susunan yang dikocok, dan tatasusunan tidak boleh dikocok di tempatnya.
  2. Untuk tatasusunan yang besar, kaedah ini kurang cekap dan memerlukan operasi traversal dan pengisian berdasarkan ruang tambahan. Jika sejumlah besar data perlu dikacau, adalah disyorkan untuk menggunakan algoritma yang lebih cekap.
  3. Untuk senario aplikasi yang perlu memastikan rawak mutlak (seperti penjanaan kata laluan), kerana lapisan bawah fungsi shuffle() bergantung pada panggilan benih rawak, rawak mutlak data tidak boleh dijamin dan algoritma penjanaan rawak yang lebih selamat perlu digunakan.

Ringkasan

Dalam pengaturcaraan PHP, mengganggu susunan elemen tatasusunan ialah senario aplikasi biasa. Menggunakan fungsi shuffle() ialah cara mudah untuk mengocok tatasusunan dalam PHP, tetapi kaedah ini akan mengubah susunan subskrip tatasusunan asal, sekali gus memusnahkan struktur data tatasusunan asal. Untuk mencapai shuffling tatasusunan PHP tanpa memusnahkan susunan subskrip tatasusunan asal, kita boleh menggunakan kaedah yang serupa dengan algoritma shuffling. Kaedah ini mempunyai had tertentu dan tidak boleh mengganggu tatasusunan yang ada, tetapi ia mempunyai pelbagai aplikasi dan kodnya ringkas dan mudah difahami. Ia adalah algoritma alat praktikal dalam pengaturcaraan PHP.

Atas ialah kandungan terperinci Bagaimana untuk mengganggu susunan tatasusunan dalam php tetapi mengekalkan subskrip tidak berubah. 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