Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimana untuk lelaran melalui tatasusunan dan melaksanakan pemadaman elemen dalam PHP

Bagaimana untuk lelaran melalui tatasusunan dan melaksanakan pemadaman elemen dalam PHP

PHPz
PHPzasal
2023-04-14 18:38:59819semak imbas

Array dalam PHP ialah jenis data yang sangat biasa digunakan. Ia menggunakan pasangan nilai kunci untuk menyimpan data dan boleh menyimpan sebarang jenis nilai, termasuk nombor, rentetan, objek, dsb.

Dalam pembangunan sebenar, kita selalunya perlu merentasi dan mengendalikan tatasusunan, antaranya pemadaman elemen tatasusunan ialah salah satu operasi yang lebih biasa. Artikel ini akan memperkenalkan cara melintasi tatasusunan dan memadamkan elemen dalam PHP, memberikan kemudahan kepada pembangunan PHP anda.

1. Operasi asas tatasusunan PHP

Dalam PHP, tatasusunan diisytiharkan menggunakan penyataan tatasusunan() atau []. Berikut ialah contoh pengisytiharan tatasusunan mudah:

$array = array("apple", "orange", "banana");

Tatasusunan mengandungi tiga elemen rentetan, iaitu "epal", "oren" dan "pisang". Kita boleh mengakses unsur-unsur dalam tatasusunan menggunakan nilai indeks seperti berikut:

$fruit = $array[1]; // 获取数组中的第二个元素"orange"

Kita juga boleh menggunakan pernyataan foreach untuk melelaran semua elemen dalam tatasusunan:

foreach($array as $fruit){
  echo $fruit . "\n";
}

Pernyataan Keputusan berikut akan dikeluarkan:

apple
orange
banana

Sekarang, kita boleh mula belajar cara mengalih keluar elemen semasa mengulangi tatasusunan.

2. Cara yang salah untuk melintasi dan memadam elemen tatasusunan

Dalam PHP, gunakan fungsi unset() untuk memadamkan elemen dalam tatasusunan. Oleh itu, ramai pembangun menggunakan sedikit imaginasi untuk menghasilkan kaedah berikut untuk melintasi dan memadam elemen tatasusunan:

foreach($array as $key => $fruit){
  if($fruit == "orange"){
    unset($array[$key]);
  }
}

Pernyataan ini berfungsi dengan baik dan sememangnya boleh memadam semua elemen dengan nilai "oren" dalam tatasusunan . Walau bagaimanapun, masalah timbul apabila kita cuba menggunakan kaedah ini untuk memadam setiap elemen dalam tatasusunan secara berurutan.

Alasannya ialah untuk setiap elemen yang akan dipadamkan, elemen sebelumnya dipadamkan dan struktur nilai utama dalam tatasusunan juga ditukar Hasil pelaksanaan kaedah ini mungkin mempunyai ralat yang tidak dijangka.

Sebagai contoh, pertimbangkan tatasusunan berikut:

$array = array("apple", "orange", "banana");

Jika kita cuba melelar dan memadam semua elemen dalam tatasusunan seperti berikut:

foreach($array as $key => $fruit){
  unset($array[$key]);
}

maka hasil pelaksanaan kaedah ini ialah:

array()

Semua elemen dalam tatasusunan telah dipadamkan, tetapi disebabkan pemadaman elemen semasa melintasi tatasusunan, struktur nilai utama dalam tatasusunan telah berubah.

Untuk menyelesaikan masalah ini, kita perlu menggunakan kaedah yang lebih stabil dan boleh dipercayai untuk melintasi dan memadam elemen tatasusunan.

3. Gunakan kaedah while untuk melintasi dan memadam elemen tatasusunan

Idea asas menggunakan kaedah while untuk melintasi dan memadam elemen tatasusunan ialah: gunakan pernyataan while untuk menggelung melalui tatasusunan dan rekod kedudukan penuding tatasusunan semasa melalui pembolehubah , dan kemudian padamkan elemen tatasusunan berdasarkan kedudukan penuding semasa.

Berikut ialah kod sampel asas kaedah ini:

$fruit = array("apple", "orange", "banana");
while(list($key, $value) = each($fruit)){
  if($value == "orange"){
    unset($fruit[$key]);
  }
}

Berbanding dengan kaedah sebelumnya, perbezaan terbesar antara pernyataan ini dan kaedah sebelumnya ialah ia menggunakan pernyataan sementara untuk gelung melalui tatasusunan. Dalam setiap gelung, fungsi list() akan digunakan untuk menetapkan nama kunci dan nilai tatasusunan kepada pembolehubah $key dan $value, dan pernyataan if akan digunakan untuk menentukan sama ada elemen semasa perlu dipadamkan. Jika ia perlu dipadamkan, gunakan fungsi unset() untuk memadamkan elemen tersebut.

Gunakan kod di atas untuk melaksanakan operasi pemadaman traversal telah dipadamkan.

Array
(
    [0] => apple
    [2] => banana
)
4. Lintas dan padam elemen tatasusunan berbilang dimensi

Jika tatasusunan anda ialah tatasusunan berbilang dimensi, kaedah di atas mungkin tidak berfungsi dengan betul. Tetapi PHP menyediakan fungsi array_walk_recursive() yang boleh membantu kami melintasi dan mengendalikan elemen dalam tatasusunan berbilang dimensi.

Berikut ialah contoh kod untuk merentasi untuk memadam elemen tatasusunan berbilang dimensi:

Kod ini berbeza daripada contoh tatasusunan satu dimensi sebelumnya. Pertama, fungsi bernama array_remove_value ditakrifkan, dan fungsi array_walk() digunakan untuk melintasi tatasusunan berbilang dimensi, sambil menggunakan &$value dan $key untuk merujuk nilai dan nama kunci elemen tatasusunan semasa supaya ia boleh diubah suai di dalamnya fungsi.

function array_remove_value(&$haystack, $needle){
  $iterator = function(&$value, $key) use(&$haystack, $needle){
    if($value === $needle){
      unset($haystack[$key]);
    }
    else if(is_array($value)){
      array_walk_recursive($value, $GLOBALS['iterator']);
    }
  };
  array_walk($haystack, $iterator);
}

$fruit = array(
    array("apple", "orange"),
    array("banana", "orange")
);

array_remove_value($fruit, "orange");
print_r($fruit);
Seterusnya, fungsi menggunakan pernyataan if untuk menyemak sama ada elemen semasa adalah sama dengan elemen yang akan dialih keluar. Jika ya, gunakan fungsi unset() untuk memadamkan elemen. Jika tidak, ia menyemak sama ada elemen semasa ialah tatasusunan, dan jika ya, fungsi itu dipanggil secara rekursif untuk meneruskan merentasi dan memproses elemen dalam tatasusunan multidimensi.

Akhir sekali, hasil daripada melaksanakan fungsi ini ialah:

Hasil ini selaras dengan jangkaan kami Pada masa ini, semua elemen "oren" dalam tatasusunan telah dipadamkan .

Array
(
    [0] => Array
        (
            [0] => apple
        )

    [1] => Array
        (
            [0] => banana
        )

)
5 Ringkasan

Dalam PHP, menggunakan tatasusunan adalah sangat biasa, dan melintasi dan mengendalikan elemen tatasusunan juga merupakan operasi yang sangat biasa. Dalam artikel ini, kami membincangkan cara melintasi dan memadam elemen tatasusunan dalam PHP dan memperkenalkan pertimbangan apabila bekerja dengan tatasusunan berbilang dimensi.

Kami berharap kaedah yang disediakan dalam artikel ini akan membantu pembangunan PHP anda dan membolehkan anda mengendalikan operasi tatasusunan dengan lebih cekap.

Atas ialah kandungan terperinci Bagaimana untuk lelaran melalui tatasusunan dan melaksanakan pemadaman elemen 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