On 22 June 2006 02:22, weetat wrote:
> Hi all,
>
> I have multi-arrays as shown below:
> I implemented usort() to sort the array by 'country' field
> in the array.
> However there some empty string value in the array and i setup my
> cmpcountry() function to sort array, however , some country
> empty string
> value are sort first .
>
> Any ideas what happen in the cmpcountry() function ?
>
> The result of sort array below is :
>
> Singapore
> Singapore
> Thailand
> ''
> Thailand
> ''
> ''
> Malaysia
> Phillipines
>
>
> function cmpcountry($a, $b)
> {
>
> $country1 = $a['country'];
> $country2 = $b['country'];
>
> if($country1 == ''){
> if($country1 < $country2){
> return 1;
> }
> }
>
> if($country2 == '') {
> if($country1 < $country2){
> return 1;
> }
> }
>
> return ($country1 < $country2) ? -1 : 1;
> }
I can't see what your additional if statements give you that a straight
comparison wouldn't. Under normal circumstances, '' will sort exactly where
you want it, so this is an ideal case for a straight strcmp:
function cmpcountry($a, $b)
{
return strcmp($a['country'], $b['country']);
}
If, however, what you're trying to do is send all blank entries to the end, you
only need the tests for empty string:
function cmpcountry($a, $b)
{
$country1 = $a['country'];
$country2 = $b['country'];
if($country1 == '') return 1;
if($country2 == '') return -1;
return strcmp($country1, $country2);
}
Cheers!
Mike
---------------------------------------------------------------------
Mike Ford, Electronic Information Services Adviser,
Learning Support Services, Learning & Information Services,
JG125, James Graham Building, Leeds Metropolitan University,
Headingley Campus, LEEDS, LS6 3QS, United Kingdom
Email: [EMAIL PROTECTED]
Tel: +44 113 283 2600 extn 4730 Fax: +44 113 283 3211
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