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.
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.
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.
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 )
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);
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 ) )
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!