我正在寻找一种对数组进行排序的方法:
$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'),
);
有没有人有这样做的好方法?
谢谢!
答案 0 :(得分:1)
<?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);
输出:
Array
(
[0] => Array
(
[0] => a
[1] => 1
[2] => 2
[3] => 3
[4] => 4
[5] => test
)
[1] => Array
(
[0] => b
[1] => 1
[2] => 3
[3] => 4
[4] => 5
[5] => test
)
[2] => Array
(
[0] => c
[1] => 1
[2] => 2
[3] => 3
[4] => 5
[5] => test
)
)
答案 1 :(得分:1)
usort就是您所需要的:http://php.net/manual/en/function.usort.php
对于PHP 7:
usort($myArray, function($a, $b) {
return $a['order'] <=> $b['order'];
});
PHP 5.3或++
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而非'排序'来自@ Do not Panic的评论。谢谢!
答案 2 :(得分:0)
确实使用usort()
PHP manual
$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);