原始问题:url
现在正在为捷克语排序,但数字不是。例如,对于这个数组:
$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;
;}
);
结果将是:Cheb,ČeskéBudějovice,Praha 1,Praha 10,Praha 2,Šatov。
但正确的应该是:Cheb,ČeskéBudějovice,Praha 1,Praha 2,Praha 10,Šatov。
像2这样较小的数字必须在10或更高之前。
答案 0 :(得分: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 :(得分:1)
您是否尝试过natsort而非您的用户?