Hi Phil.

On Monday 13 April 2009, PJ wrote:
> Thanks for the suggestion, Mark. I've already experimented with count;
> you're close, but there is still a small glitch and that's in count();
> foreach doesn't give a damn about count so you can't use that - it is
> reset once inside the foreach loop.

Look again at the code - the count() is not inside the foreach, so it is 
not reset, simply stored in $lastIndex for comparison.

If your array is associative then simply use another variable to find the 
last value in the array - the code doesn't need to change much.

Try actually running the code below - it does work, as does the previous 
version I posted if the array is not associative. 

I'd prefer it if in future you didn't tell me that my code didn't work 
without actually trying it - I tested that snippet before posting it, as I 
did with the following.

HTH

Mark

<?php
// Non-associative array (the code I posted previously).
$a = array('1','2','3');

$lastIndex = count($a) - 1;
$outputString = '';
foreach ($a as $index => $value) {
        if ($index != $lastIndex) {
                $outputString .= "$value, ";
    } else {
        $outputString = rtrim($outputString,', '); // Strip last comma.
        $outputString .= " & $value<br />";
    }
}
echo $outputString;

// Associative array (changed only very slightly).
$a = array('martha' => '1','jock' => '2','dave' => '3');

$lastIndex = count($a);
$counter = 0;
$outputString = '';
foreach ($a as $index => $value) {
        $counter++;
        if ($counter != $lastIndex) {
                $outputString .= "$value, ";
        } else {
                $outputString = rtrim($outputString,', '); // Strip last comma.
                $outputString .= " & $value<br />";
        }
}
echo $outputString;
?>

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

Reply via email to