Saya memiliki sebuah array:
$array = array(1,2,3,4,5);
Jika saya membuang konten array mereka akan terlihat seperti ini:
array(5) {
[0] => int(1)
[1] => int(2)
[2] => int(3)
[3] => int(4)
[4] => int(5)
}
Ketika saya mengulang-ulang dan menghapus kunci tertentu, indeks akan didongkrak.
foreach($array as $i => $info)
{
if($info == 1 || $info == 2)
{
unset($array[$i]);
}
}
Selanjutnya, jika saya melakukan dump lain sekarang akan terlihat seperti:
array(3) {
[2] => int(3)
[3] => int(4)
[4] => int(5)
}
Apakah ada cara yang tepat untuk mengatur ulang array sehingga elemen-elemennya berbasis Zero lagi ??
array(3) {
[0] => int(3)
[1] => int(4)
[2] => int(5)
}
Dapatkan metode lain yang menarik:
Sekarang kunci $ array disetel ulang.
sumber
Gunakan
array_splice
daripadaunset
:Sampel kerja di sini .
sumber
foreach
loop. Gunakan standari Loop
dan cukup mengatur ulang saya setelah sambungan. Juga,Working sample here.
tidak berfungsi.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
foreach
loop, namun, ini masih menyisakan Anda setelah bekerja karena sifat binatang itu. Biasanya saya menyarankan hal-hal sederhana sepertiforeach
, bagaimanapun, dalam hal ini, yang terbaik adalah mengingatfor loop
logika kuno yang baik . Cukup gunakani
! Untuk mempertahankan indeks yang sesuai, cukup kurangii
setelah setiap penghapusan item Array.Inilah contoh sederhana dan berfungsi :
Akan menghasilkan:
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:
Akan menghasilkan:
Seperti yang Anda lihat, saya memanipulasi $ i sebelum sambungan karena saya ingin menghapus item sebelumnya, bukan item yang sekarang.
sumber
Tetapi terlambat menjawab, setelah PHP 5.3 bisa jadi;
sumber
Atau Anda dapat membuat fungsi Anda sendiri yang melewati array dengan referensi.
Jadi yang harus Anda lakukan adalah ...
... dan sekarang Anda
$array
tanpa nilai yang Anda tempatkan$unsets
dan kunci diatur ulangsumber
100% bekerja untuk saya! Setelah elemen yang tidak disetel dalam array Anda dapat menggunakan ini untuk mengindeks ulang array
sumber
Saya gunakan
$arr = array_merge($arr);
untuk membuat ulang array. Sederhana dan mudah.sumber
Dalam situasi saya, saya perlu mempertahankan kunci unik dengan nilai-nilai array, jadi saya hanya menggunakan array kedua:
sumber
unset($arr1)
yang akan membuatnya TIDAK tersedia untuk beralih lagi di loop Anda. 2) Anda kehilangan titik koma pada baris kedua hingga terakhir. Cuplikan kode ini tidak akan berjalan.