我在對數組進行排序時遇到了一些問題。我調用了一個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 關注
- 129 瀏覽
添加回答
舉報
0/150
提交
取消
