Saya memiliki larik berikut, yang ingin saya isi ulang sehingga kuncinya terbalik (idealnya dimulai dari 1): Array saat ini ( edit: array sebenarnya terlihat seperti ini):
Bagaimana seharusnya:
Jika Anda ingin mengindeks ulang mulai dari nol, cukup lakukan hal berikut:
Jika Anda perlu memulainya pada satu, maka gunakan yang berikut ini:
Berikut adalah halaman manual untuk fungsi yang digunakan:
Inilah cara terbaik :
itu kembali
dengan melakukan ini
kamu mendapatkan ini
Penjelasan
Saya baru tahu Anda juga dapat melakukan
Itu melakukan pengindeksan ulang di tempat, sehingga Anda tidak berakhir dengan salinan array asli. Mengapa mengindeks ulang? Cukup tambahkan 1 ke indeks:
Edit Setelah pertanyaan diklarifikasi: Anda bisa menggunakan Yah, saya ingin berpikir bahwa untuk apa pun tujuan akhir Anda, Anda sebenarnya tidak perlu mengubah array menjadi berbasis 1 sebagai lawan dari berbasis 0, tetapi sebaliknya bisa menanganinya pada waktu iterasi seperti yang diposting Gumbo. Namun , untuk menjawab pertanyaan Anda, fungsi ini harus mengubah array apa pun menjadi versi berbasis 1
EDITInilah fungsi yang lebih dapat digunakan kembali/fleksibel, jika Anda menginginkannya
Anda dapat mengindeks ulang array sehingga array baru dimulai dengan indeks 1 seperti ini;
Output dari di atas adalah;
Ini akan melakukan apa yang Anda inginkan:
Solusi yang lebih elegan:
Mirip dengan @monowerker, saya perlu mengindeks ulang array menggunakan kunci objek ...
Ini menghasilkan:
Anda mungkin ingin mempertimbangkan mengapa Anda ingin menggunakan array berbasis 1 sama sekali. Array berbasis nol (ketika menggunakan array non-asosiatif) cukup standar, dan jika Anda ingin output ke UI, sebagian besar akan menangani solusi dengan hanya meningkatkan integer setelah output ke UI. Pikirkan tentang konsistensi — baik dalam aplikasi Anda dan dalam kode yang Anda gunakan — ketika memikirkan pengindeks 1 berbasis untuk array. Jika Anda tidak mencoba menyusun ulang array, Anda cukup melakukannya: $ array = array_reverse ($ array); The array_reverse sangat cepat dan akan menata ulang ketika membalikkan. Orang lain sudah lama menunjukkan ini pada saya. Jadi saya tidak bisa mengambil kredit untuk datang dengan itu. Tetapi sangat sederhana dan cepat.
penghapusan duplikat dan indeks ulang array:
Inilah implementasi saya sendiri. Kunci dalam array input akan dinomori ulang dengan penambahan kunci mulai dari $ start_index.
Penyortiran hanyalah sort () , pengindeksan ulang tampak agak konyol tetapi jika diperlukan ini akan melakukannya. Meski tidak di tempat. Gunakan array_walk () jika Anda akan melakukan ini di banyak tempat, gunakan saja for-key-value loop jika ini adalah operasi satu kali.
Mirip dengan kontribusi Nick, saya datang ke solusi yang sama untuk mengindeks ulang array, tetapi sedikit meningkatkan fungsi sejak dari PHP versi 5.4, itu tidak berfungsi karena meneruskan variabel dengan referensi. Contoh
fungsi pengindeksan ulang adalah seperti ini menggunakan penutupan kata kunci
Cukup lakukan ini:
Anda dapat dengan mudah melakukannya setelah menggunakan fungsi array_values () dan array_filter () bersama-sama untuk menghapus elemen array kosong dan pengindeksan ulang dari array dalam PHP. Fungsi array_filter () Fungsi PHP array_filter () menghapus elemen atau nilai array kosong dari array dalam PHP. Ini juga akan menghapus nilai kosong, nol, salah, 0 (nol). Fungsi array_values () Fungsi PHP array_values () mengembalikan array yang berisi semua nilai array. Array yang dikembalikan akan memiliki tombol angka, mulai dari 0 dan bertambah 1. Hapus Elemen Array Kosong dan Reindex Pertama mari kita lihat output array $ stack:
Output:
Dalam output di atas kami ingin menghapus nilai kosong, nol, 0 (nol) dan kemudian memasukkan kembali elemen array. Sekarang kita akan menggunakan fungsi array_values () dan array_filter () bersama-sama seperti dalam contoh di bawah ini:
Output: |