2017-04-24 82 views
0

原題:url排序數據陣列結構在PHP爲捷克語 - 正確的排序號

現在捷克語工作排序,但數字沒有。例如,對於此數組:

$data = array(
'items' => array(
    0 => array('city' => 'Praha 10'), 
    1 => array('city' => 'Praha 2'), 
    2 => array('city' => 'Praha 1'), 
    3 => array('city' => 'Cheb'), 
    4 => array('city' => 'České budějovice'), 
    5 => array('city' => 'Šatov') 
), 
); 



$body = wp_remote_retrieve_body($request); 
$data = json_decode($body, true)['data']['items']; 
usort($data, 
    function($a,$b) { 
    $coll = collator_create('cs_CZ'); 
    $aSortKey = collator_get_sort_key($coll, $a['city']); 
    $bSortKey = collator_get_sort_key($coll, $b['city']); 
    return $aSortKey >= $bSortKey; 
    ;} 
); 

結果將是:海布,捷克布傑約維採,布拉格1,布拉格10,布拉格2,Šatov。

但正確應爲:海布,捷克布傑約維採,布拉格1,布拉格2,布拉格10,Šatov。

像2 SO較小數量必須爲10或更高之前。

+0

的問題是,你正在尋找不是數字​​。這些只是包含一些數字的字符串。如果您需要以數字方式排序,您需要提取數字並按數字排序。 – arkascha

回答

1

你嘗試natsort而不是你的usort的?

+0

它不起作用,正如我從文檔中看到的那樣,不可能在裏面使用帶有已定義函數的natsort。 –

2

在PHP中,自然排序將很容易處理這個問題:

下面是官方鏈接如何做到這一點:php.net natural sort

標準分類:

Array 
(
    [3] => img1.png 
    [1] => img10.png 
    [0] => img12.png 
    [2] => img2.png 
) 

自然順序排序:

Array 
(
    [3] => img1.png 
    [2] => img2.png 
    [1] => img10.png 
    [0] => img12.png 
) 
+1

就像一個魅力,非常感謝Mehrad –

+0

它不工作,因爲我從資料看這是不可能的裏面定義的函數使用natsort。 –