Bu foreach endeksi bulmak mümkün mü?
bir aşağıdaki gibi döngü "için":
for($i = 0; $i < 10; ++$i){
echo $i.' ';
}
$ Sana endeksini verecektir.
Ben döngü için kullanmak zorunda ya da foreach döngü indeksi almak için bazı yolu var mı?
Böyle artırılır bir alan olarak, sizin foreach
bir hack koyabilirsiniz her çalışma yoluyla, for
döngü bir sayısal endeksli dizide verir tam olarak ne olduğunu. Böyle bir alan kılavuzu yönetimi (artışlarla, vb) ihtiyacı olan bir pseudo-index olacaktır.
A foreach
sizin $key
değerin şeklinde size indeksi verecektir, bu nedenle böyle bir hack gerekli olmamalıdır.
, örneğin, bir foreach
strong>
$index = 0;
foreach($data as $key=>$val)
{
// Use $key as an index, or...
// ... manage the index this way..
echo "Index is $index\n";
$index++;
}
Bu on any array to find the current key its on. As you can guess current()
geçerli değerini döndürecektir key()
arayabilir ve next()
sonraki elemana dizinin imlecini hareket edeceği unutulmamalıdır.
(Not, C # ama konsept PHP aynıdır) burada benim cevap okuyunuz:
http://stackoverflow.com/questions/43021/c-get-index-of-current-foreach-iteration#43029
CliffNotes:
Foreach bir yineleyici ile çalışır, bu yüzden endeks asla bilinmez.
Jonathan doğru. PHP diziler değerlere bir harita tablo eşleme tuşları olarak hareket ederler. diziniz gibi, tanımlanmış ise, bazı durumlarda bir dizin alabilirsiniz
$var = array(2,5);
for ($i = 0; $i < count($var); $i++) {
echo $var[$i]."\n";
}
çıkış olacak
2
5
bu durumda dizideki her öğe bir bilinebilir indeksine sahiptir, ancak daha sonra aşağıdaki gibi bir şey yaparsanız
$var = array_push($var,10);
for ($i = 0; $i < count($var); $i++) {
echo $var[$i]."\n";
}
Eğer hiçbir çıkış olsun. En çok dilde olduğu gibi PHP diziler doğrusal yapılar değildir çünkü bu olur. Onlar daha fazla veya tüm saklanan değerleri tuşları olmayabilir karma tablolar gibidir. Dizi tanımlanmış ise sadece bir dizin var çünkü Dolayısıyla foreach üzerlerine sürün dizinleri kullanmaz. Eğer bir dizin olması gerekir varsa, diziler tamamen üzerlerinde sürünerek önce tanımlandığından emin, ve döngü için kullanın.