Adding "and" between the last two database results in a foreach loop
I want to add the word "and" between the last two MySQL results. I can add commas, but I need to add commas between the first and then "and" between the last two.
Here is the code I'm using:
$not_first = false;
foreach($solos as $solo)
{
if ($not_first)
{
echo ', ';
}
$not_first = true;
echo $solo->id;
}
I could repeat "and" instead of a comma. But if I have 3 or more results, it will say "result and result, result and result". I want him to say "result, result, result and result."
Any ideas?
source to share
I would rather use for
instead foreach
in this case:
for($i=0; $i<count($solos); $i++){
echo $solos[$i]->id;
if($i == count($solos) - 2){ // --> second last element, implies "and"
echo " and ";
}
else{
if($i != count($solos) - 1){ // --> "," for all other elements, except last
echo ", ";
}
}
}
source to share
The other answers work fine. For completeness, you can also insert "and" using preg_replace.
$solos = array( 'one', 'two', 'three', 'four' );
$result = implode(', ',$solos);
$result = preg_replace('/, ([^,]+)$/',', and \1', $result);
Over 1 million iterations, mnv's array_pop method took 2.13 seconds. preg_replace completed in 3.65 seconds. Using array_pop would be preferable.
source to share