On 14 April 2009 18:12, PJ advised:

> Jim Lucas wrote:
>> PJ wrote:
>>> Jim Lucas wrote:
>>>> PJ wrote:
>>>>> foreach does a nice job if you want the results identical each
time.
>>>>> What can you use to change the formatting of the results dependent
on
>>>>> the number of results. Here's an example:
>>>>> foreach ( $authors[$bookID] AS $authorID => $authorData ) {

>>>>>                 # Display the echo "{$authorData['first_name']}
>>>>> {$authorData['last_name']}\n";
>>>>>             }
>>>>> 
>>>>> will echo - Joe Boe John Blue Andy Candy etc depending on how many
>>>>> rows we have.
>>>>> What I want is: Joe Boe, John Blue, Andy Candy & Hans Stick (
>>>>> separated by commas, except for the last one which is separated
with
>>>>> & . I thought of passing a variable to the foreach and then using
if
>>>>> elseif... but that can't work because the variable is reset to 0
>>>>> after each pass. Can't get switch to do it (maybe I don't
understand
>>>>> it right. Help ? 

Needing effectively a three-way flag, I think I'd think a bit outside
the
box and go with something like (untested, but the general principle is
right!):

    $count = FALSE;
    foreach ($authors[$bookID] as $authorID=>$authorData):
       if ($count===FALSE):
          $count = count($authors[$bookID])-1;
       elseif (--$count):
          echo ', ';
       else:
          echo ' & ';
       endif;
       echo $authorData['first_name'], ' ', $authorData['last_name'];
    endforeach;

Cheers!

Mike

 --
Mike Ford,  Electronic Information Developer,
C507, Leeds Metropolitan University, Civic Quarter Campus, 
Woodhouse Lane, LEEDS,  LS1 3HE,  United Kingdom
Email: m.f...@leedsmet.ac.uk
Tel: +44 113 812 4730


To view the terms under which this email is distributed, please go to 
http://disclaimer.leedsmet.ac.uk/email.htm

--
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to