|
Posted by youngord@gmail.com on 10/01/07 01:08
On Sep 30, 9:44 pm, "J.O. Aho" <u...@example.net> wrote:
> young...@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
thanks very much. i understand clearly.^_^
Navigation:
[Reply to this message]
|