2017-03-15 67 views
1

我有三个阵列是这样的:排序阵列只使用阵列的第一个元素在PHP

$a1 = array('55','something1','something2','something3'); 
$a2 = array('77','something14','something25','something36'); 
$a4 = array('66.6','something15','something25','something34'); 

和阵列这三个这样的:通过使用sort()

$a = array($a1,$a2,$a4); 

我知道可以对数值进行排序,但在这里我想排序上面的数组,这样的排序方式只能通过数组$ a1,$ a2和$ a4的第一个数值元素,即输出应该是第一个$ a1,因为55小于66.6和77然后$因为66.6小于77,$ a2.I不需要数组中元素的值$ a1,$ a2,$ a4被更改,只有数组$ a应该以数字方式重新排列。

+0

*只有阵列$ A应该是重新排列数字* - 如何? – RomanPerekhrest

+1

[按值排序多维数组]的可能重复(http://stackoverflow.com/questions/2699086/sort-multi-dimensional-array-by- value) – Stony

回答

1

使用usort

usort - 按使用用户定义的比较 函数值的数组

$a1 = array('55','something1','something2','something3'); 
$a2 = array('77','something14','something25','something36'); 
$a4 = array('66.6','something15','something25','something34'); 


$array = [$a1, $a2, $a4]; 

usort($array, function($a, $b) { 
    if ($a[0] > $b[0]) { 
     return 1; 
    } else { 
     return -1; 
    } 
}); 


print_r($array); 

活例如:https://3v4l.org/QnUXc