Hanya sebuah aditif.
Saya tahu ini sudah tua , tetapi saya ingin menambahkan solusi. Saya tidak melihat bahwa saya datang dengan diri saya sendiri. Menemukan pertanyaan ini saat mencari solusi yang berbeda dan hanya berpikir, "Yah, selagi aku di sini."
Pertama-tama, jawaban Neal bagus dan bagus untuk digunakan setelah Anda menjalankan loop Anda, namun, saya lebih suka melakukan semua pekerjaan sekaligus. Tentu saja, dalam kasus khusus saya, saya harus melakukan lebih banyak pekerjaan daripada contoh sederhana ini di sini, tetapi metode ini masih berlaku. Saya melihat di mana pasangan lain menyarankan foreachloop, namun, ini masih menyisakan Anda setelah bekerja karena sifat binatang itu. Biasanya saya menyarankan hal-hal sederhana seperti foreach, bagaimanapun, dalam hal ini, yang terbaik adalah mengingat for looplogika kuno yang baik . Cukup gunakan i! Untuk mempertahankan indeks yang sesuai, cukup kurangi isetelah setiap penghapusan item Array.
Inilah contoh sederhana dan berfungsi :
$array = array(1,2,3,4,5);
for ($i = 0; $i < count($array); $i++) {
if($array[$i] == 1 || $array[$i] == 2) {
array_splice($array, $i, 1);
$i--;
}
}
Akan menghasilkan:
array(3) {
[0]=> int(3)
[1]=> int(4)
[2]=> int(5)
}
Ini dapat memiliki banyak implementasi sederhana. Sebagai contoh, kasus persis saya membutuhkan penyimpanan item terbaru dalam array berdasarkan nilai multidimensi. Saya akan menunjukkan kepada Anda apa yang saya maksud:
$files = array(
array(
'name' => 'example.zip',
'size' => '100000000',
'type' => 'application/x-zip-compressed',
'url' => '28188b90db990f5c5f75eb960a643b96/example.zip',
'deleteUrl' => 'server/php/?file=example.zip',
'deleteType' => 'DELETE'
),
array(
'name' => 'example.zip',
'size' => '10726556',
'type' => 'application/x-zip-compressed',
'url' => '28188b90db990f5c5f75eb960a643b96/example.zip',
'deleteUrl' => 'server/php/?file=example.zip',
'deleteType' => 'DELETE'
),
array(
'name' => 'example.zip',
'size' => '110726556',
'type' => 'application/x-zip-compressed',
'deleteUrl' => 'server/php/?file=example.zip',
'deleteType' => 'DELETE'
),
array(
'name' => 'example2.zip',
'size' => '12356556',
'type' => 'application/x-zip-compressed',
'url' => '28188b90db990f5c5f75eb960a643b96/example2.zip',
'deleteUrl' => 'server/php/?file=example2.zip',
'deleteType' => 'DELETE'
)
);
for ($i = 0; $i < count($files); $i++) {
if ($i > 0) {
if (is_array($files[$i-1])) {
if (!key_exists('name', array_diff($files[$i], $files[$i-1]))) {
if (!key_exists('url', $files[$i]) && key_exists('url', $files[$i-1])) $files[$i]['url'] = $files[$i-1]['url'];
$i--;
array_splice($files, $i, 1);
}
}
}
}
Akan menghasilkan:
array(1) {
[0]=> array(6) {
["name"]=> string(11) "example.zip"
["size"]=> string(9) "110726556"
["type"]=> string(28) "application/x-zip-compressed"
["deleteUrl"]=> string(28) "server/php/?file=example.zip"
["deleteType"]=> string(6) "DELETE"
["url"]=> string(44) "28188b90db990f5c5f75eb960a643b96/example.zip"
}
[1]=> array(6) {
["name"]=> string(11) "example2.zip"
["size"]=> string(9) "12356556"
["type"]=> string(28) "application/x-zip-compressed"
["deleteUrl"]=> string(28) "server/php/?file=example2.zip"
["deleteType"]=> string(6) "DELETE"
["url"]=> string(45) "28188b90db990f5c5f75eb960a643b96/example2.zip"
}
}
Seperti yang Anda lihat, saya memanipulasi $ i sebelum sambungan karena saya ingin menghapus item sebelumnya, bukan item yang sekarang.