Вы можете сделать это (без изменения синтаксиса):
function foreach_counter($ar, $callback) {
$counter = 1;
$array_size = count($ar);
foreach($ar as $item){
$callback($item, $counter, $counter == $array_size);
$counter++;
}
}
foreach_counter(array('a','b'), function($item, $counter, $isLast) {
echo $counter . ': ' . $item . '' . ($isLast ? 'END' : ',');
});
// outputs 1: a, 2: b END
Однако, как видите, читать сжатую версию становится все труднее, поэтому, хотя вы можете, вы не должны этого делать- особенно если вы только начинаете понимать php.
Часто вы хотите построить строку в таком цикле.Для этого используйте implode
:
echo implode(', ', array(1,2,3));
// output: 1, 2, 3