3 回答

TA贡献1828条经验 获得超4个赞
您可以使用 phpnatsort例如:
$arr = [
'10e arrondrissement',
'1e arrondrissement',
'8e arrondrissement',
'2e arrondrissement',
'5e arrondrissement',
];
natsort($arr);
print_r($arr);
将返回 :
Array (
[1] => 1e arrondrissement
[3] => 2e arrondrissement
[4] => 5e arrondrissement
[2] => 8e arrondrissement
[0] => 10e arrondrissement
)

TA贡献1847条经验 获得超7个赞
在这种情况下,恕我直言,您不应该通过 PHP 更改排序,而应使用数据库排序。
这是我修改查询生成器的建议:
$qb = $this->createQueryBuilder('arrondissement')
->add( 'orderBy', 'CAST(arrondissement.nom AS UNSIGNED), arrondissement.nom')
$query = $qb->getQuery();
return $query->execute();

TA贡献1813条经验 获得超2个赞
在学说中,您无法轻松地按自然顺序对字符串/对象进行排序。但你可以在 php 中对其进行排序:
$result = $query->getResult();
$nomSort = function($a, $b) :int {
return strnatcmp($a->getNom(), $b->getNom());
}
usort($result, $nomSort);
// $result is now sorted
strnatcmp
将根据“自然排序”进行比较,即解释“1”<“2”<“10”<“20”,即使附加了更多字母。
usort
可以将自定义排序函数应用于数组 - 这是必需的,因为您想要访问数组元素(对象)的子元素(nom)。- 否则你可能只使用 natsort。
- 3 回答
- 0 关注
- 125 浏览
添加回答
举报