Eğer ilk veya son ve dizide birden fazla unsur var sadece, ben şu çözümü tercih ya dışında her element için bir şeyler yapmak gerekir.
Orada birçok çözümleri üzerinde olan ve benim aylar önce / bir yıl yayınlanmıştır biliyorum, ama bu kendi başına oldukça şık hissediyorum şeydir. Daha az yük için izin verebilir bir sayısal "i = (saymak-1)" çek, aksine onay her döngü de bir mantıksal kontrol edilir.
Döngü yapısı garip hissedebilirsiniz, ancak (başlangıç) thead ve sipariş için karşılaştırabilirsiniz, tfoot (uç), HTML tablo etiketleri tbody (akım).
$first = true;
foreach($array as $key => $value) {
if ($first) {
$first = false;
// Do what you want to do before the first element
echo "List of key, value pairs:\n";
} else {
// Do what you want to do at the end of every element
// except the last, assuming the list has more than one element
echo "\n";
}
// Do what you want to do for the current element
echo $key . ' => ' . $value;
}
, Ilk çocuk: Bir Sırasız listesi (ul) bir border-bottom to every element except the last eklemek istiyorsanız Örneğin, web geliştirme açısından, o zaman yerine bir border-top to every element except the first (CSS ekleyebilirsiniz son çocuk IE7 tarafından desteklenmez): oysa IE7 + ve Firefox / Webkit tarafından desteklenen, bu mantığı destekliyor.
Siz de her iç içe döngü için $ ilk değişkeni yeniden ve şeyler (sonları / istisnalar sorunlarına neden olmayacak şekilde) her döngü ilk yinelemenin ilk sürecinde $ ilk yanlış yapar beri sadece iyi çalışır özgür hissedebilirsiniz .
$first = true;
foreach($array as $key => $subArray) {
if ($first) {
$string = "List of key => value array pairs:\n";
$first = false;
} else {
echo "\n";
}
$string .= $key . '=>(';
$first = true;
foreach($subArray as $key => $value) {
if ($first) {
$first = false;
} else {
$string .= ', ';
}
$string .= $key . '=>' . $value;
}
$string .= ')';
}
echo $string;
Örnek çıktı:
List of key => value array pairs:
key1=>(v1_key1=>v1_val1, v1_key2=>v1_val2)
key2=>(v2_key1=>v2_val1, v2_key2=>v2_val2, v2_key3=>v2_val3)
key3=>(v3_key1=>v3_val1)