我在对数组进行排序时遇到了一些问题。我调用了一个API,我得到的数据就是这样array:41 [ 0 => StreetData {#251 +house: "1 Some Street" +street: "" } 1 => StreetData {#236 +house: "11 Some Street" +street: "" } 2 => StreetData {#236 +house: "4 Some Street" +street: "" }]我正在尝试做一个自然的排序,所以一直在尝试ksort($address->streets);这似乎不会改变任何事情。我所追求的基本上是一种自然的搜索。因此,应该首先考虑数字,然后考虑街道。因此,对于上述内容,我希望它是array:41 [ 0 => StreetData {#251 +house: "1 Some Street" +street: "" } 1 => StreetData {#236 +house: "4 Some Street" +street: "" } 2 => StreetData {#236 +house: "11 Some Street" +street: "" }]因为 11 大于 4。这是一个非常模糊的例子,显然我希望有一个2,3等。那么,我怎样才能实现这种自然的排序呢?
1 回答

慕斯王
TA贡献1864条经验 获得超2个赞
我认为你需要和.strnatcmpusort
<?php
class StreetData
{
public $house;
public $street;
public function StreetData($a, $b)
{
$this->house = $a;
$this->street = $b;
}
}
$arr = array(
new StreetData("1 Some Street", ""),
new StreetData("11 Some Street", ""),
new StreetData("4 Some Street", ""),
);
function mySort($a, $b)
{
return strnatcmp($a->house, $b->house);
}
usort($arr, "mySort");
var_dump($arr);
?>
- 1 回答
- 0 关注
- 96 浏览
添加回答
举报
0/150
提交
取消