Apakah mungkin menemukan foreach
indeks?
dalam satu for
lingkaran sebagai berikut:
for ($i = 0; $i < 10; ++$i) {
echo $i . ' ';
}
$i
akan memberi Anda indeks.
Apakah saya harus menggunakan for
loop atau adakah cara untuk mendapatkan indeks dalam foreach
loop?
$myarr['foo'] = 'bar';
metode ini gagalvatiable++;
setiap iterasi. Cara tradisional, tetapi selalu berhasil.Anda bisa meletakkan retasan di bidang Anda
foreach
, seperti bidang yang bertambah pada setiap run-through, yang persis seperti yangfor
diberikan loop pada Anda dalam array yang diindeks secara numerik. Bidang seperti itu akan menjadi indeks semu yang membutuhkan manajemen manual (kenaikan, dll).A
foreach
akan memberi Anda indeks Anda dalam bentuk$key
nilai Anda , jadi peretasan seperti itu tidak perlu dilakukan.misalnya dalam
foreach
sumber
Perlu dicatat bahwa Anda dapat memanggil
key()
array apa saja untuk menemukan kunci saat ini aktif. Seperti yang dapat Anda tebak,current()
akan mengembalikan nilai saat ini dannext()
akan memindahkan pointer array ke elemen berikutnya.sumber
$key
dari$key=>$value
) ... Namun, saya yakin kinerja yang lebih rendah tidak signifikan / dapat dilihat dalam satu loop sederhana.Owen memiliki jawaban yang bagus. Jika Anda hanya ingin kunci, dan Anda bekerja dengan array ini mungkin juga berguna.
sumber
foreach(array_keys($array) as $index=>$key)
,.Anda dapat membuat di
$i
luar loop dan lakukan$i++
di bagian bawah loop.sumber
Kedua loop ini setara (kecuali tentu saja pagar pengaman):
misalnya
sumber
Saya pikir opsi terbaik adalah sama:
itu mudah dan normal
sumber
Jonathan benar. Array PHP bertindak sebagai kunci pemetaan tabel peta untuk nilai. dalam beberapa kasus Anda bisa mendapatkan indeks jika array Anda didefinisikan, seperti
output Anda akan menjadi
dalam hal ini setiap elemen dalam array memiliki indeks yang dapat diketahui, tetapi jika Anda kemudian melakukan sesuatu seperti berikut ini
Anda tidak mendapatkan hasil. Ini terjadi karena array dalam PHP bukan struktur linier seperti pada kebanyakan bahasa. Mereka lebih seperti tabel hash yang mungkin atau mungkin tidak memiliki kunci untuk semua nilai yang disimpan. Karenanya foreach tidak menggunakan indeks untuk menjelajahinya karena mereka hanya memiliki indeks jika array didefinisikan. Jika Anda perlu memiliki indeks, pastikan array Anda sepenuhnya ditentukan sebelum merangkak di atasnya, dan gunakan untuk loop.
sumber
$var[] = 10;
(lihat tautan PHP untuk memandu), sehinggafor
loop kedua menampilkan hasil yang diharapkan.Array PHP memiliki pointer internal, jadi coba ini:
Berfungsi baik-baik saja untuk saya (hanya diuji secara preliminarily).
sumber
Saya biasanya melakukan ini ketika bekerja dengan array asosiatif:
Ini akan bekerja dengan baik dengan array non-asosiatif juga. $ key akan menjadi nilai indeks. Jika mau, Anda juga dapat melakukan ini:
sumber
Saya ingin menambahkan ini, saya menggunakan ini di laravel untuk mengindeks tabel saya:
Kode Saya:
sumber
$loop
variabel tidak dapat digunakan karena meminta PHP umum.Saya memecahkan cara ini, ketika saya harus menggunakan indeks dan nilai foreach dalam konteks yang sama:
sumber
sumber