Php 按子数组的字母顺序排序';第一要素

Php 按子数组的字母顺序排序';第一要素,php,arrays,sorting,Php,Arrays,Sorting,我正在寻找一种对数组进行排序的方法,如下所示: $array = array( [0] => array('a', '1', '2', '3', '4,' test'), [1] => array('c', '1', '2', '3', '5', 'test'), [2] => array('b', '1', '3', '4,' 5,', 'test), ); 这样它就可以根据子数组的第一个元素对子数组进行排序,从而返回: $array = ar

我正在寻找一种对数组进行排序的方法,如下所示:

$array = array(
     [0] => array('a', '1', '2', '3', '4,' test'),
     [1] => array('c', '1', '2', '3', '5', 'test'),
     [2] => array('b', '1', '3', '4,' 5,', 'test),
);
这样它就可以根据子数组的第一个元素对子数组进行排序,从而返回:

$array = array(
     [0] => array('a', '1', '2', '3', '4,' test'),
     [1] => array('b', '1', '3', '4,' 5,', 'test),
     [2] => array('c', '1', '2', '3', '5', 'test'),
);
有没有人有好的方法来做这件事

谢谢大家!

<?php 

$array = array(
     0 => array('a', '1', '2', '3', '4', 'test'),
     1 => array('c', '1', '2', '3', '5', 'test'),
     2 => array('b', '1', '3', '4', '5', 'test'),
);

array_multisort(array_column($array, 1), SORT_ASC, $array);

print_r($array);

usort是您所需要的:

对于PHP7:

usort($myArray, function($a, $b) {
    return $a['order'] <=> $b['order'];
});
PHP 5.2或更早版本

function mySort($a, $b) {
    return $a['order'] - $b['order'];
}

usort($myArray, 'mySort');
编辑:mySort,而不是@Don't Panic注释中的“排序”。谢谢

确实要使用
usort()

$array=array(
数组('a','1','2','3','4','test'),
数组('c','1','2','3','5','test'),
数组('b','1','3','4','5','test');
usort($array,function($a,$b)
{
如果($a[0]=$b[0]){
返回0;
}
回报($a[0]<$b[0])?-1:1;
});
变量转储($数组);

使用
usort
功能。无数的例子随处可见有人有好的方法来做这件事吗?您尝试了哪些方法?将父数组重构为关联数组,其中每个键是每个子数组的第0个元素,值是子数组。然后使用ksort()为什么数组中的3 arg\u multisort是数组?不明白吗?我得到的东西是,阅读文档是有用的:)
usort($myArray, function($a, $b) {
    return $a['order'] - $b['order'];
});
function mySort($a, $b) {
    return $a['order'] - $b['order'];
}

usort($myArray, 'mySort');
$array = array(
        array('a', '1', '2', '3', '4','test'),
        array('c', '1', '2', '3', '5', 'test'),
        array('b', '1', '3', '4','5','test'));

usort($array, function ($a, $b)
        {
            if ($a[0] == $b[0]) {
                return 0;
            }
            return ($a[0] < $b[0]) ? -1 : 1;
        });

var_dump($array);