PHP 地址数组的自然排序

我在对数组进行排序时遇到了一些问题。我调用了一个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等。


那么,我怎样才能实现这种自然的排序呢?


慕神8447489
浏览 124回答 1
1回答

慕斯王

我认为你需要和.strnatcmpusort<?php&nbsp; &nbsp; class StreetData&nbsp; &nbsp; {&nbsp; &nbsp; &nbsp; &nbsp; public $house;&nbsp; &nbsp; &nbsp; &nbsp; public $street;&nbsp; &nbsp; &nbsp; &nbsp; public function StreetData($a, $b)&nbsp; &nbsp; &nbsp; &nbsp; {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $this->house = $a;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $this->street = $b;&nbsp; &nbsp; &nbsp; &nbsp; }&nbsp; &nbsp; }&nbsp; &nbsp; $arr = array(&nbsp; &nbsp; &nbsp; &nbsp; new StreetData("1 Some Street", ""),&nbsp; &nbsp; &nbsp; &nbsp; new StreetData("11 Some Street", ""),&nbsp; &nbsp; &nbsp; &nbsp; new StreetData("4 Some Street", ""),&nbsp; &nbsp; );&nbsp; &nbsp; function mySort($a, $b)&nbsp; &nbsp; {&nbsp; &nbsp; &nbsp; &nbsp; return strnatcmp($a->house, $b->house);&nbsp; &nbsp; }&nbsp; &nbsp; usort($arr, "mySort");&nbsp; &nbsp; var_dump($arr);?>
打开App,查看更多内容
随时随地看视频慕课网APP