Re: sort multidimension array

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Examine your function for the case of cmpcountry("Thailand", "");
if($country2 == '') is true
  if($country1 < $country2) is false
Then ($country1 < $country2) is false again and 1 is returned.
This means that "" is less than "Thailand", and should be sorted higher.

The easiest way to fix this is actually to remove the inner ifs in both
your if blocks, they are not necessary.  The second if block should also
return -1.


David

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;
>   }
> 
> usort($arraytest,"cmpcountry");
> 
>  $arraytest= array(
>      array
>         (
>             'country' => 'Thailand',
>             'city' => 'Z'
>         )
>      ,
>      array
>         (
>             'country' => 'Thailand',
>             'city' => 'M'
>         )
>      ,
>      array
>         (
>             'country' => 'Singapore',
>             'city' => 'G'
>         )
>      ,
>      array
>         (
>             'country' => 'Singapore',
>             'city' => 'B'
>         )
>      ,
>      array
>         (
>             'country' => '',
>             'city' => 'U'
>         )
>       ,
>       array
>         (
>             'country' => '',
>             'city' => 'Y'
>         )
>     ,
>     array
>         (
>             'country' => '',
>             'city' => 'J'
>         )
> 
>      );
> 

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


[Index of Archives]     [PHP Home]     [Apache Users]     [PHP on Windows]     [Kernel Newbies]     [PHP Install]     [PHP Classes]     [Pear]     [Postgresql]     [Postgresql PHP]     [PHP on Windows]     [PHP Database Programming]     [PHP SOAP]

  Powered by Linux