0

元のインデックスを維持したまま、2 次元配列を降順で並べ替える必要があります。

$arr = array();

for ($i=0; $i<5; $i++) {
    $arr[] = array(rand(0,5), rand(10,100));
}

結果は次のようになります。

[0] => array(5, 100)
[1] => array(5, 90)
[2] => array(5, 35)
[3] => array(4, 10)
[4] => array(3, 15)

したがって、最初に配列が 1 列目でソートされ、次に 2 列目でソートされます。

arsort私が正しく理解していれば、関数はベクトルで動作します。

このタスクを解決するにはどうすればよいですか?

4

1 に答える 1

2

http://docs.php.net/uasortを参照

例えば

<?php
$arr = array(
    'A'=>array(5, 100),
    'B'=>array(4, 10),
    'C'=>array(5, 35),
    'D'=>array(3, 15),
    'E'=>array(5, 90)
);

uasort($arr, function($a, $b) {
    if ( $a[0] < $b[0] ) return 1;
    else if ( $a[0] > $b[0] ) return -1;
    else if ( $a[1] < $b[1] ) return 1;
    else if ( $a[1] > $b[1] ) return -1;
    else return 0;
});

foreach($arr as $k=>$v) {
    echo $k,'=', join(', ', $v), "\n";
}

版画

A=5, 100
E=5, 90
C=5, 35
B=4, 10
D=3, 15
于 2012-09-10T09:43:07.403 に答える