2010-10-18 12 views

Odpowiedz

63

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 
} 
+1

+1 mi się podoba lepsze niż moje również. –

+0

Miałem "naturalny" pierwszy element, więc używam tego warunkowego. ;) Ale naprawdę doceniam ten pomysł. Wielkie dzięki. – MEM

+0

to świetna sztuczka! ale czy jest w tym jakaś funkcja? – Cody

8

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++; 
} 
2
first = true 
foreach(...) 
    if first 
     do stuff 
     first = false 
0

hm

<?php 
$i = 0; 
foreach($ar as $sth) { 
    if($i++ == 0) { 
     // do something 
    } 
    // do something else 
} 

bardziej elegancki.

+0

Czy to faktycznie zadziała? Czy $ i będzie naprawdę inkrementowane po ocenie wyciągu? –

+3

@ 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

+0

tak . Wartość $ i ++ jest obliczana po wyrażeniu, +++ i byłaby oceniana jako pierwsza. – janoliver

29

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 
+1

To nie zadziała z tablicami asocjacyjnymi –

+0

@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

+0

thanx dobra robota – deemi

4

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.

1

To działa

foreach($array as $element) { 
    if ($element === reset($array)) 
     echo 'FIRST ELEMENT!'; 

    if ($element === end($array)) 
     echo 'LAST ELEMENT!'; 
}