2017-04-23 32 views
0

我從遠程API獲取JSON在PHP中,然後與usort我排序數據數組從a到z。但我需要用捷克語字母排序。在捷克語言的PHP排序數據數組結構

這是我當前的代碼:

 $body = wp_remote_retrieve_body($request); 
    $data = json_decode($body, true)['data']['items']; 
    usort($data,function($a,$b) {return strnatcasecmp($a['city'],$b['city']);}); 

你能幫助我嗎?

感謝

+0

這篇文章在這裏http://www.informit.com/articles/article.aspx?p=1969707&seqNum=13確實用新鮮的字母排序。你可能只需要改變角色中的一些字母即可啓動並運行。如果您使用的是大於或等於5.3的php版本,那麼您可以使用Collat​​or Class,並使用文章底部解釋的sort函數。 – cptnk

+0

是的,有PHP 5.4。我試過了,但沒有工作......出了什麼問題? '$ data = json_decode($ body,true)['data'] ['items']; $ collat​​or = new Collat​​or('cs_CZ'); $ collat​​or-> sort($ data ['city']);' –

+0

您必須給出一個包含所有項目的數組,而不僅僅是我假設的城市。你能用$ data數組結構更新你的問題嗎? – cptnk

回答

0

既然你沒有提供的陣列結構我只是假設之一。

$data = array(
    'items' => array(
     0 => array('city' => 'Froni'), 
     1 => array('city' => 'Frans'), 
     2 => array('city' => 'Frédéric') 
    ), 
); 
usort($data['items'], 
    function($a,$b) { 
     $coll = collator_create('fr_FR'); 
     $aSortKey = collator_get_sort_key($coll, $a['city']); 
     $bSortKey = collator_get_sort_key($coll, $b['city']); 
     return $aSortKey >= $bSortKey; 
    } 
); 
var_dump($data['items']); 

這利用了Collat​​or Sort Key而不是比較字符串本身,而是用來對你的usort匿名函數中的字符串進行排序。不過,您很可能必須更改usort函數及其語言環境中的參數。

+0

對不起,我誤解了你...這個Collat​​or正在按預期工作!非常感謝! –

+0

@MarekVeselý沒問題,很高興我可以幫忙。 – cptnk