亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

對以數字開頭的字符串數組進行排序

對以數字開頭的字符串數組進行排序

PHP
米脂 2023-09-22 17:46:27
我正在嘗試在 Symfony 中按名稱對對象數組進行排序。但我不知道該怎么做,因為字符串以數字開頭,所以順序不好。我嘗試在我的存儲庫中使用 queryBuilder: $qb = $this->createQueryBuilder('arrondissement')            ->addOrderBy('arrondissement.nom', 'ASC');        $query = $qb->getQuery();        return $query->execute();控制器中還有一個 sort() 函數,但正如你所看到的,情況并不完全如此。我想要這樣的東西:1er arrondissement,2e ....,20e ...,巴黎
查看完整描述

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 

)



查看完整回答
反對 回復 2023-09-22
?
aluckdog

TA貢獻1847條經驗 獲得超7個贊

在這種情況下,恕我直言,您不應該通過 PHP 更改排序,而應使用數據庫排序。


這是我修改查詢生成器的建議:


 $qb = $this->createQueryBuilder('arrondissement')

            ->add( 'orderBy', 'CAST(arrondissement.nom AS UNSIGNED), arrondissement.nom')

        $query = $qb->getQuery();

        return $query->execute();


查看完整回答
反對 回復 2023-09-22
?
慕姐8265434

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。

查看完整回答
反對 回復 2023-09-22
  • 3 回答
  • 0 關注
  • 156 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號