我从远程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']);});
你能帮助我吗?
谢谢
答案 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']);
这利用了Collator Sort Key而不是比较字符串本身,并用于对usort匿名函数中的字符串进行排序。但是,您很可能必须更改usort函数及其语言环境中的参数。