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);