Zastanawiasz się, jaka byłaby dobra metoda na pierwszą iterację w pętli foreach. Chcę zrobić coś innego w pierwszej iteracji.PHP - Chwyć pierwszy element za pomocą foreach
Czy warunkowa jest nasza najlepsza opcja w tych przypadkach?
Zastanawiasz się, jaka byłaby dobra metoda na pierwszą iterację w pętli foreach. Chcę zrobić coś innego w pierwszej iteracji.PHP - Chwyć pierwszy element za pomocą foreach
Czy warunkowa jest nasza najlepsza opcja w tych przypadkach?
Tak, jeśli nie są w stanie przejść przez obiekt w inny sposób (normalne dla pętli) wystarczy użyć warunkowe w tym przypadku:
$first = true;
foreach ($obj as $value)
{
if ($first)
{
// do something
$first = false;
}
else
{
// do something
}
// do something
}
Można po prostu dodać licznik do samego początku, tak jak poniżej:
$i = 0;
foreach($arr as $a){
if($i == 0) {
//do ze business
}
//the rest
$i++;
}
first = true
foreach(...)
if first
do stuff
first = false
hm
<?php
$i = 0;
foreach($ar as $sth) {
if($i++ == 0) {
// do something
}
// do something else
}
bardziej elegancki.
Czy to faktycznie zadziała? Czy $ i będzie naprawdę inkrementowane po ocenie wyciągu? –
@ yan Cóż, albo * operator post-increment * działa [zgodnie z opisem] (http://php.net/manual/en/language.operators.increment.php), albo PHP jest strasznie zepsute ... – deceze
tak . Wartość $ i ++ jest obliczana po wyrażeniu, +++ i byłaby oceniana jako pierwsza. – janoliver
Nawet Morer eleganterer:
foreach($array as $index => $value) {
if ($index == 0) {
echo $array[$index];
}
}
Ten przykład działa tylko jeśli używasz PHP wbudowaną tablicą dołączyć funkcje/funkcji lub ręcznie określić klawisze w odpowiedniej kolejności numerycznej.
Oto podejście, które nie jest podobne do innych wymienionych tutaj, które powinny działać poprzez naturalną kolejność dowolnej tablicy PHP.
$first = array_shift($array);
//do stuff with $first
foreach($array as $elem) {
//do stuff with rest of array elements
}
array_unshift($array, $first); //return first element to top
To nie zadziała z tablicami asocjacyjnymi –
@NathanBell Technicznie wszystkie tablice są asocjacyjne w PHP. Ten przykład działa tylko wtedy, gdy używasz wbudowanych funkcji/funkcji wbudowanych w tablicę PHP lub ręcznie określasz klucze w odpowiedniej kolejności liczbowej. – Klinky
thanx dobra robota – deemi
Widziałem to rozwiązanie na blog post w moim zestawie wyników wyszukiwania, który przyniósł tę wiadomość, a ja myślałem, że to raczej elegancki. Choć może trochę ciężki w przetwarzaniu.
foreach ($array as $element)
{
if ($element === reset($array))
echo 'FIRST ELEMENT!';
if ($element === end($array))
echo 'LAST ELEMENT!';
}
Należy zauważyć, że istnieje również ostrzeżenie, że post będzie działać tylko wtedy, gdy wartości tablicy są unikalne. Jeśli twoim ostatnim elementem jest "świat", a jakiś element losowy w środku to także "świat", ostatni element zostanie wykonany dwukrotnie.
To działa
foreach($array as $element) {
if ($element === reset($array))
echo 'FIRST ELEMENT!';
if ($element === end($array))
echo 'LAST ELEMENT!';
}
+1 mi się podoba lepsze niż moje również. –
Miałem "naturalny" pierwszy element, więc używam tego warunkowego. ;) Ale naprawdę doceniam ten pomysł. Wielkie dzięki. – MEM
to świetna sztuczka! ale czy jest w tym jakaś funkcja? – Cody