I want to echo a variable at the last iteration of a foreach loop, only counting when a conditional is met inside a loop.
I realize I could echo $var outside the foreach statement, but I’d really like to figure out a way to do this within the foreach statement. This a crude example where that makes total sense, but what I really want to do is figure out the last iteration within the foreach statement.
Here is what I have tried:
$var = "end";
foreach ($options as $option => $icon) {
if (strpos($check[0], $option) !== false) {
echo $icon;
}
if (end($options)){
echo $var;
}
}
I have also tried setting up a counter when $icon exists but nothing has worked correctly, because the total count is unknown.
How do I do this?
Advertisement
Answer
If the array is not empty, end will always return the last element regardless of what element the array pointer is pointing to.
I don’t see a valid reason for doing this, but you can just see if there is NOT a next element. foreach will advance the array pointer each iteration, so next will attempt to fetch the next one, and if it is on the last element it will fail:
$var = "end";
foreach ($options as $option => $icon) {
if (strpos($check[0], $option) !== false) {
echo $icon;
}
if (!next($options)){
echo $var;
}
}