foreach - wo befinde ich mich gerade im Array?

tofa

Mitglied
Hallo,

wenn ich ein assoziatives Array mit einer foreach-Schleife durchlaufe, möchte ich feststellen, wann ich das letzte Element des Arrays behandel. Leider habe ich in der PHP-Manual keine entsprechende Option gefunden. Ich weiß, dass ich mit end() den Zeiger auf das letzte Element setzen kann - weiß aber nicht, wie mir das weiterhelfen könnte.

Vielen Dank für die Antworten!
 
Hmm, ich habs jetzt mal so gelöst
PHP:
<?php
error_reporting(E_ALL);

$stack = array("Orange", "Banane", "Apfel", "Himbeere");

foreach($stack as $item) {
	if($item == end($stack)) { echo "Letzter: ".$item."<br/>"; }
	else { echo $item."<br/>"; }
}

?>
Schöne Nacht noch ;)
 
Hallo,

viele Wege führen nach Rom – aber hier mal zwei Vorschläge:

PHP:
$keys = array_keys($array);
$last_key = $keys[count($keys)-1];

foreach ($array as $key => $value) {
	if ($key == $last_key) {
		// …
	}
}

PHP:
$count = count($array);
$i = 0;

foreach ($array as $key => $value) {
	if (++$i == $count) {
		// …
	}
}

Grüße,
Matthias
 
Folgendes wäre möglich:
PHP:
do {
	echo current($array);
	if( ($item = next($array)) === false ) {
		echo 'Das war’s!';
		break;
	}
} while( true );
Oder aber Folgendes:
PHP:
$keys = array_flip(array_keys($array));
$count = count($array);
foreach( $array as $key => $value ) {
	echo $value;
	if( $keys[$key] == $count - 1 ) {
		echo 'Das war’s!';
	}
}
 
Zurück