Один вариант уже был (для сравнения его тоже приведу), теперь ещё один:
foreach ($array as $key => $value) {
if($value == end($array)) {
// делаем что-либо с последним элементом...
}
else {
// делаем что-либо с каждым элементом
}
}
foreach ($array as $key => $value) {
if (!next($array)) {
// делаем что-либо с последним элементом...
}
else {
// делаем что-либо с каждым элементом
}
}
edit1:
Спасибо dkrnl. Устроил тест.
Вариант №1 работает только если явно задать ключи:
$array = array('1' => '1','2' => '2','3' => '3', '4'=>'4','5'=>'5');
Вариант №2 работает только если массив передать по ссылке:
$array = new ArrayObject(array(1,2,3,4,5));
Работающий в любом случае вариант:
$total = count($array);
$counter = 0;
foreach($array as $key => value){
$counter++;
if($counter == $total){
// делаем что-либо с последним элементом...
}
else{
// делаем что-либо с каждым элементом
}
}
edit2:
А ведь и правда стало смахивать на for :) Неудобство в том, что при обращении к элементу в случае с for придётся использовать индекс.
edit3:
Неплохое решение DeadLy:
$end_element = array_pop($array);
foreach ($array as $value) {
// делаем что-либо с каждым элементом
}
// делаем что-либо с последним элементом $end_element