Company logo
  • Jobs
  • Bootcamp
  • About Us
  • For professionals
    • Home
    • Jobs
    • Courses
    • Questions
    • Teachers
    • Bootcamp
  • For business
    • Home
    • Our process
    • Plans
    • Assessments
    • Payroll
    • Blog
    • Sales
    • Calculator

0

56
Views
Adding "and" between last two database results in 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 ones 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 echo 'and' instead of the comma. But if I have 3 or more results it would say "result and result and result and result". I want it to say "result, result, result, and result".

Any ideas?

8 months ago · Santiago Trujillo
3 answers
Answer question

0

Try to use next idea

if (count($solos) > 2) {
    $last = array_pop($solos);
    echo implode(', ', $solos) . ' and ' . $last;
}
else
{
    echo implode(' and ', $solos);
}
8 months ago · Santiago Trujillo Report

0

I'd prefer using for instead of 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 ", ";
        }    
    }
}
8 months ago · Santiago Trujillo Report

0

Or use this:

   $i = 1;
   $last = count($solos);
    foreach($solos as $solo)
    {
        if ($i > 1 && $i != $last)
        {
            echo ', ';
        }
        elseif ( $i == $last )
        {
            echo ' and ';
        }

        echo $solo->id;
        $i++;
    }
8 months ago · Santiago Trujillo Report
Answer question
Find remote jobs