php 自定义排序
时间: 2023-07-20 22:22:55 浏览: 44
在 PHP 中,可以使用自定义函数来进行排序。自定义排序函数需要接受两个参数,表示要比较的两个元素,然后返回一个整数值,表示它们的大小关系。如果返回值小于 0,表示第一个元素比第二个元素小;如果返回值大于 0,表示第一个元素比第二个元素大;如果返回值等于 0,表示两个元素相等。
下面是一个使用自定义排序函数的示例:
```
function cmp($a, $b) {
if ($a == $b) {
return 0;
}
return ($a < $b) ? -1 : 1;
}
$arr = array(4, 2, 8, 6);
usort($arr, "cmp");
print_r($arr);
```
在上面的例子中,我们定义了一个 `cmp` 函数来比较两个元素的大小关系。然后使用 `usort` 函数对数组进行排序,并传入 `cmp` 函数作为比较函数。最后输出排序后的数组。
你也可以根据自己的需求编写自定义排序函数来进行排序。
相关问题
php 排序多组经纬度
在 PHP 中,可以使用 usort 函数对数组进行自定义排序。下面是一个根据经纬度计算距离并进行排序的示例:
```
function sortByDistance($a, $b)
{
$lat1 = $a['latitude'];
$lon1 = $a['longitude'];
$lat2 = $b['latitude'];
$lon2 = $b['longitude'];
$theta = $lon1 - $lon2;
$dist = sin(deg2rad($lat1)) * sin(deg2rad($lat2)) + cos(deg2rad($lat1)) * cos(deg2rad($lat2)) * cos(deg2rad($theta));
$dist = acos($dist);
$dist = rad2deg($dist);
$miles = $dist * 60 * 1.1515;
return ($miles <= $m) ? -1 : 1;
}
usort($locations, 'sortByDistance');
```
上面的代码中,$locations 是包含经纬度的数组,每个元素都应该是一个具有 "latitude" 和 "longitude" 键的关联数组。'sortByDistance' 是自定义排序函数,在这个函数中使用两个点的经纬度计算两点间的距离,并比较距离的大小来决定元素的顺序。
如果需要按距离从近到远排序,将 $miles <= $m 的返回值改为 $miles >= $m 即可
php 二级数组排序
在PHP中,对二维数组进行排序有多种方法。引用和提供了两种不同的排序方法。方法一是通过自定义函数multisortArray来实现,该方法接受一个二维数组和需要排序的字段作为参数,并返回排序后的数组。方法二则是通过调用PHP内置函数array_multisort来实现排序。该函数接受两个或多个数组作为参数,并按照指定的字段和排序类型进行排序。
举个例子,如果我们有一个二维数组$arr,其中包含了 "f" 和 "s" 两个字段,我们可以使用以下代码对其进行排序:
```
$arr = [
["f" => 1, "s" => 2],
["f" => 1, "s" => 3],
["f" => 2, "s" => 3],
];
$first = array_column($arr, "f");
$second = array_column($arr, "s");
array_multisort($first, SORT_ASC, $second, SORT_DESC, $arr);
```
这样,数组$arr就会根据第一个字段"f"进行升序排序,如果第一个字段相同,则根据第二个字段"s"进行降序排序。最后,我们可以使用dd()函数来显示排序后的数组。
以上就是对PHP二维数组排序的方法和一个示例。你可以根据自己的需求选择合适的方法来排序二维数组。<span class="em">1</span><span class="em">2</span><span class="em">3</span>
#### 引用[.reference_title]
- *1* [PHP二维数组排序](https://blog.csdn.net/qq_29945729/article/details/68923884)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"]
- *2* *3* [php二维数组排序](https://blog.csdn.net/weiguang102/article/details/115507617)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"]
[ .reference_list ]