在php中为捷克语排序数据数组结构

时间:2017-04-23 13:35:20

标签: php arrays json sorting

我从远程API获取php中的JSON,然后使用usort我将数据数组从a到z排序。但我需要用捷克语字母对其进行排序。

这是我目前的代码:

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

你能帮助我吗?

谢谢

1 个答案:

答案 0 :(得分: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函数及其语言环境中的参数。