PHP排序多维数组

PHP排序多维数组,php,arrays,sorting,Php,Arrays,Sorting,我目前正在使用usort对多维数组进行排序,它根据值1按从高到低的顺序列出我的数组,但是,如果有多个子数组具有最高值,我希望能够根据从高到低的顺序对值2进行排序。这可能吗?您可以在相同的usort回调中正确执行此操作。大致如下: usort($array, function ($a, $b) { if ($a['foo'] < $b['foo']) return 1; else if ($a['foo'] > $b['foo']) return -1;

我目前正在使用
usort
对多维数组进行排序,它根据
值1
按从高到低的顺序列出我的数组,但是,如果有多个子数组具有最高值,我希望能够根据从高到低的顺序对
值2
进行排序。这可能吗?

您可以在相同的
usort
回调中正确执行此操作。大致如下:

usort($array, function ($a, $b) {
    if      ($a['foo'] < $b['foo']) return 1;
    else if ($a['foo'] > $b['foo']) return -1;
    else if ($a['bar'] < $b['bar']) return 1;
    else if ($a['bar'] > $b['bar']) return -1;
    else                            return 0;
});
usort($array,function($a,$b){
如果($a['foo']<$b['foo'])返回1;
else if($a['foo']>$b['foo'])返回-1;
否则如果($a['bar]<$b['bar]])返回1;
else if($a['bar]>$b['bar])返回-1;
否则返回0;
});
看一看

您可能希望执行以下操作:

$data = array(
               array('x', 'y', 'z'),
               array(3, 7, 2),
             );
array_multisort($data[0], SORT_DESC, SORT_STRING,
                $data[1], SORT_DESC, SORT_NUMERIC);
var_dump($data);