dst*_*t11 12 php arrays sorting
我有这个数组
Array
(
[0] => Array
(
[brand] => blah blah
[location] => blah blah
[address] => blah blah
[city] => blah blah
[state] => CA
[zip] => 90210
[country] => USA
[phone] => 555-1212
[long] => -111
[lat] => 34
[distance] => 3.08
)
[1] => Array
(
[brand] => blah blah
[location] => blah blah
[address] => blah blah
[city] => blah blah
[state] => CA
[zip] => 90210
[country] => USA
[phone] => 555-1212
[long] => -111
[lat] => 34
[distance] => 5
)
.
.
.
}
Run Code Online (Sandbox Code Playgroud)
我希望能够按距离对哈希中的数组进行排序.
Jac*_*cob 22
您需要先提取所有距离,然后将距离和数据传递给函数.如array_multisort文档中的示例3所示.
foreach ($data as $key => $row) {
$distance[$key] = $row['distance'];
}
array_multisort($distance, SORT_ASC, $data);
Run Code Online (Sandbox Code Playgroud)
这假设您首先需要最短距离,否则更改SORT_ASC为SORT_DESC
小智 7
如果要避免循环,可以使用该array_column函数实现目标。例如,
您想使用距离排序在数组下面排序
$arr = array(
0 => array( 'lat' => 34, 'distance' => 332.08 ),
1 => array( 'lat' => 34, 'distance' => 5 ),
2 => array( 'lat' => 34, 'distance' => 34 )
);
Run Code Online (Sandbox Code Playgroud)
使用单行下方的数组将按距离排序
array_multisort( array_column( $arr, 'distance' ), SORT_ASC, SORT_NUMERIC, $arr );
Run Code Online (Sandbox Code Playgroud)
现在,$ arr包含按距离排序的数组