You are here: Re: the usort 's puzzle « All PHP « IT news, forums, messages
Re: the usort 's puzzle

Posted by J.O. Aho on 09/30/07 13:44

youngord@gmail.com wrote:
> <?php
> $mix=array(
> array("A",10),
> array("B",5),
> array("C",100)
> );
> function com($x,$y){
> echo $x[0];
> }
>
> usort($mix,'com');
>
> ?>
>
> i think the $x[0] result is A,
> but the final $x[0] result is BC.
> why???

first round of usort does:

com(array("B",5),array("A",10))

which leads to that

$x=array("B",5)
$y=array("A",10)

then you echo

$x[0]

which has the value

B

the function returns nothing, which is equal to false (this moves a after b in
the mix array)

second round of usort does:

com(array("C",100),array("B",5))

which leads to that

$y=array("C",100)
$y=array("B",5)

then you echo

$x[0]

which has the value

C

the function returns nothing, which is equal to false (which moves c before b
in the mix array)


Which leads to that you geat an output of

BC

The $mix array looks now like

array(3) {
[0]=>
array(2) {
[0]=>
string(1) "C"
[1]=>
int(100)
}
[1]=>
array(2) {
[0]=>
string(1) "B"
[1]=>
int(5)
}
[2]=>
array(2) {
[0]=>
string(1) "A"
[1]=>
int(10)
}
}


I guess you really wanted

<?php
$mix=array(
array("A",10),
array("B",5),
array("C",100)
);
function com($x,$y){
return ($x[1]<$y[1])?false:true;
}

usort($mix,'com');

//To allow you to see the sorted array
var_dump($mix);
?>

Which gives you

array(3) {
[0]=>
array(2) {
[0]=>
string(1) "B"
[1]=>
int(5)
}
[1]=>
array(2) {
[0]=>
string(1) "A"
[1]=>
int(10)
}
[2]=>
array(2) {
[0]=>
string(1) "C"
[1]=>
int(100)
}
}

Kind of BAC.

--

//Aho

 

Navigation:

[Reply to this message]


Удаленная работа для программистов  •  Как заработать на Google AdSense  •  England, UK  •  статьи на английском  •  PHP MySQL CMS Apache Oscommerce  •  Online Business Knowledge Base  •  DVD MP3 AVI MP4 players codecs conversion help
Home  •  Search  •  Site Map  •  Set as Homepage  •  Add to Favourites

Copyright © 2005-2006 Powered by Custom PHP Programming

Сайт изготовлен в Студии Валентина Петручека
изготовление и поддержка веб-сайтов, разработка программного обеспечения, поисковая оптимизация