我有一个循环访问一组值的数组,这就是它的样子:
$arr[] = array(
"name" => $name,
"add1" => $add1,
"add2" => $add2,
"add3" => $add3,
"postcode" => $pc,
"distance" => $distance
);
简单而快速的问题(尽管我正在努力寻找答案),我想知道如何将数组排序为距离升序(这是一个浮点数)顺序?
您可以使用 usort 并在比较函数中比较距离:
usort($arr, function($a, $b){
return $a['distance'] - $b['distance'];
});
编辑:
我想我明白你现在想要实现的目标是什么。试试这个:
function array_sort_by_column(&$array, $col, $direction = SORT_ASC) {
$sort_col = array();
foreach ($array as $key => $row) {
$sort_col[$key] = $row[$col];
}
array_multisort($sort_col, $direction, $array);
}
array_sort_by_column($arr, 'distance');
我发现组织数组的另一种方法是将它们作为键,然后用这些键进行组织。
示例(使用您的代码):
$arr = array();
$arr[$distance] = array("name" => $name,
"add1" => $add1,
"add2" => $add2,
"add3" => $add3,
"postcode" => $pc,
"distance" => $distance);
ksort($arr);
您可以使用 usort 根据个性化规则对数组进行排序
<?php
function sortOnDistance($a, $b) {
if ($a['distance'] == $b['distance']) {
return 0;
}
return ($a['distance'] < $b['distance']) ? -1 : 1;
}
usort($array, "sortOnDistance");
?>