捷克语php中的排序数据数组结构-正确的数字排序

捷克语php中的排序数据数组结构-正确的数字排序,php,arrays,json,sorting,Php,Arrays,Json,Sorting,原始问题: 捷克语的排序现在正在运行,但数字排序却没有。例如,对于此阵列: $data = array( 'items' => array( 0 => array('city' => 'Praha 10'), 1 => array('city' => 'Praha 2'), 2 => array('city' => 'Praha 1'), 3 => array('city' => 'Cheb'), 4

原始问题:

捷克语的排序现在正在运行,但数字排序却没有。例如,对于此阵列:

$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号、萨托夫

但正确的答案应该是:切布、塞斯克·巴德·乔维奇、普拉哈1号、普拉哈2号、普拉哈10号、萨托夫


因此,较小的数字(如2)必须在10或更高之前。

您是否尝试替代usort?

您是否尝试替代usort?

在PHP中,自然排序可以轻松处理此问题:

以下是如何做到这一点的官方链接:

标准分类:

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
)

在PHP中,自然排序可以轻松处理这一问题:

以下是如何做到这一点的官方链接:

标准分类:

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
)

问题是你看到的不是数字。这些只是包含一些数字的字符串。如果你需要以数字方式排序,你需要提取数字并按它们排序。问题是你看到的不是数字。这些只是包含一些数字的字符串。如果您需要以数字方式进行排序,则需要提取数字并按其排序。它不起作用,正如我从文档中看到的,无法使用内部定义函数的natsort。它不起作用,正如我从文档中看到的,无法使用内部定义函数的natsort。它不起作用,正如我从文档中看到的,不可能使用内部已定义函数的natsort。它不起作用,正如我从文档中看到的,不可能使用内部已定义函数的natsort。