Рассмотрим несколько вариантов решения поставленной задачи.
Вариант №1
Работает только если явно задать ключи:
1 2 3 4 5 6 7 8 9 10 |
$array = array('1' => '1','2' => '2','3' => '3', '4'=>'4','5'=>'5'); foreach ($array as $key => $value) { if($key == end($array)) { // делаем что-либо с последним элементом... } else { // делаем что-либо с каждым элементом } } |
Вариант №2
Работает только если массив передать по ссылке:
1 2 3 4 5 6 7 8 9 10 |
$array = new ArrayObject(array(1,2,3,4,5)); foreach ($array as $key => $value) { if (!next($array)) { // делаем что-либо с последним элементом... } else { // делаем что-либо с каждым элементом } } |
Вариант №3
Работает в любом случае, но выглядит очень неопрятно:
1 2 3 4 5 6 7 8 9 10 11 |
$total = count($array); $counter = 0; foreach($array as $key => value){ $counter++; if($counter == $total){ // делаем что-либо с последним элементом... } else{ // делаем что-либо с каждым элементом } } |
Альтернативный вариант
Изящен и отвечает всем требованиям поставленной задачи:
1 2 3 4 5 |
$end_element = array_pop($array); foreach ($array as $value) { // делаем что-либо с каждым элементом } // делаем что-либо с последним элементом $end_element |