Hi David ,
Thanks for your input, it solve my problem.
David Tulloh wrote:
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