Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimana untuk mengatur dan menggabungkan tatasusunan php

Bagaimana untuk mengatur dan menggabungkan tatasusunan php

PHPz
PHPzasal
2023-05-19 14:09:091150semak imbas

Array ialah jenis data yang sangat biasa dan penting dalam pembangunan pengaturcaraan. Permutasi dan gabungan adalah operasi biasa dalam pemprosesan tatasusunan Melalui pilih atur dan gabungan, unsur-unsur dalam tatasusunan boleh disusun dan digabungkan dengan cara yang berbeza untuk mencapai tujuan pemprosesan yang berbeza. Dalam artikel ini, kami akan memberi tumpuan kepada cara menggunakan bahasa pengaturcaraan PHP untuk melaksanakan gabungan tatasusunan.

1. Apakah susunan dan gabungan tatasusunan PHP

Pertama sekali, kita perlu memahami apa itu susunan dan gabungan tatasusunan PHP. Ringkasnya, pilih atur dan gabungan bermaksud menggabungkan elemen dalam tatasusunan dengan cara yang berbeza untuk menjana set data baharu. Secara khusus, pilih atur adalah untuk menyusun semula semua elemen dalam tatasusunan dalam susunan manakala gabungan adalah untuk menggabungkan elemen dalam tatasusunan dalam susunan yang berbeza untuk menjana berbilang set data baharu.

Sebagai contoh, untuk tatasusunan yang mengandungi nombor 1, 2, 3, 4, pilih atur mungkin menghasilkan keputusan berikut:

1,2,3,4
1,2 ,4, 3
1,3,2,4
1,3,4,2
1,4,2,3
1,4,3,2
2,1 ,3, 4
2,1,4,3
……

dan gabungan boleh menghasilkan keputusan berikut:

1,2
1,3
1,4
2,3
2,4
3,4
……

2 Seterusnya kami akan memperkenalkan beberapa kaedah A untuk melaksanakan pilih atur tatasusunan dan gabungan dalam PHP.

1. Gunakan gelung untuk merealisasikan

Pertama, kita boleh menggunakan gelung untuk merealisasikan pilih atur dan gabungan tatasusunan. Secara khusus, kita boleh menggunakan dua gelung bersarang untuk menggabungkan setiap elemen dalam tatasusunan dengan elemen lain untuk menjana data baharu. Berikut ialah contoh kod ringkas:

<?php 
$arr = array(1, 2, 3, 4); 
$result = array();
for ($i = 0; $i < count($arr); $i++) { 
   for ($j = 0; $j < count($arr); $j++) { 
       if ($arr[$i] != $arr[$j]) { 
            $result[] = array($arr[$i], $arr[$j]); 
       } 
   } 
}
print_r($result); 
?>

Dalam kod di atas, kami menggunakan dua gelung bersarang untuk menggabungkan setiap elemen dalam tatasusunan asal $arr dengan elemen lain. Antaranya, jika nilai kedua-dua elemen adalah sama, gelung ini dilangkau, jika tidak nilai kedua-dua elemen digunakan sebagai tatasusunan baru dan dimasukkan ke dalam tatasusunan hasil $result.

2. Gunakan rekursi untuk melaksanakan

Selain menggunakan untuk gelung, kami juga boleh menggunakan rekursi untuk melaksanakan gabungan tatasusunan. Secara khusus, kita boleh mentakrifkan fungsi rekursif yang membahagikan tatasusunan asal secara rekursif kepada berbilang subarray sehingga panjang subarray ialah 1, dan kemudian menggabungkan subarray ke dalam tatasusunan baharu. Berikut ialah contoh kod ringkas:

<?php 
function array_combination($arr){ 
   $len = count($arr); 
   if($len == 1){ 
      return $arr; 
   } 
   $result = array(); 
   for($i=0; $i<$len; $i++){ 
      $tmp_arr = $arr; 
      unset($tmp_arr[$i]); 
      $tmp_arr = array_values($tmp_arr); 
      $tmp_result = array_combination($tmp_arr); 
      foreach($tmp_result as $val){ 
         $val[] = $arr[$i]; 
         $result[] = $val; 
      } 
   } 
   return $result; 
}
$arr = array(1,2,3); 
$result = array_combination($arr); 
print_r($result); 
?>

Dalam kod di atas, kami mentakrifkan array_combination fungsi rekursif untuk membahagi tatasusunan asal secara rekursif kepada berbilang sub-tatasusunan. Jika panjang subarray ialah 1, subarray dikembalikan secara langsung jika tidak, ia memanggil dirinya secara rekursif dan membelah subarray semula sehingga panjang subarray ialah 1. Akhir sekali, kami menggabungkan subarrays ke dalam tatasusunan baharu dalam susunan yang berbeza.

3. Soalan dan Penyelesaian Lazim

Bagaimana untuk mengalih keluar elemen pendua daripada tatasusunan PHP?
  1. Apabila memproses pilih atur dan gabungan tatasusunan, anda mungkin menghadapi situasi yang memerlukan penyahduaan. Pada masa ini, kita boleh menggunakan fungsi array_unique() dalam PHP, yang boleh mengalih keluar elemen pendua daripada tatasusunan. Contohnya adalah seperti berikut:
<?php 
$arr = array(1,2,2,3,4,1);
$result = array_unique($arr);
print_r($result); 
?>

Dalam kod di atas, kami menggunakan fungsi array_unique() untuk menjana tatasusunan baharu selepas mengalih keluar elemen pendua daripada tatasusunan asal $arr.

Bagaimana untuk menjana semua gabungan tatasusunan?
  1. Dalam pembangunan sebenar, mungkin perlu menjana semua pilih atur dan gabungan tatasusunan asal, bukan hanya sebahagian daripadanya. Pada masa ini, kita boleh menggunakan berbilang lapisan untuk gelung atau rekursi untuk menjana semua pilih atur dan gabungan berdasarkan panjang tatasusunan asal. Contohnya adalah seperti berikut:
<?php 
$arr = array(1, 2, 3); 
$result = array();
for ($i = 0; $i < count($arr); $i++) { 
   for ($j = 0; $j < count($arr); $j++) { 
      if ($arr[$i] != $arr[$j]) { 
         for ($k = 0; $k < count($arr); $k++) { 
            if ($arr[$i] != $arr[$k] && $arr[$j] != $arr[$k]) { 
               $result[] = array($arr[$i], $arr[$j], $arr[$k]); 
             } 
          } 
       } 
    } 
}
print_r($result); 
?>

Dalam kod di atas, kami menggunakan tiga lapisan untuk gelung untuk menjana semua pilih atur dan gabungan tatasusunan asal.

4. Ringkasan

Dalam artikel ini, kami memperkenalkan kaedah pelaksanaan susunan dan gabungan tatasusunan PHP dan penyelesaian kepada masalah biasa. Dalam pembangunan sebenar, susunan dan gabungan tatasusunan adalah operasi yang sangat biasa, dan kaedah pelaksanaan yang berbeza perlu dipilih mengikut keperluan khusus untuk menyelesaikan tugas pengaturcaraan dengan lebih baik. Apabila menggunakan kaedah pilih atur dan gabungan, anda perlu memberi perhatian kepada butiran seperti penyahduplikasian dan susunan tatasusunan untuk memastikan ketepatan dan kecekapan program.

Atas ialah kandungan terperinci Bagaimana untuk mengatur dan menggabungkan tatasusunan 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