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: [email protected]
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