带有特殊字符的PHP排序数组

Tim*_*Tim 5 php sorting laravel-5

我知道这次被问过很多次,但我还是找不到防弹解决方案.

这是我的数组,需要按字母顺序排序.

setlocale(LC_ALL, 'sl_SI.utf8');

$a = [
   '?' => [...],  
   'a' => [...],
   'š' => [...], 
   'u' => [...] 
]
Run Code Online (Sandbox Code Playgroud)

我怎样才能按键排序?

Ana*_*Die 5

从这个例子中引用: - 在PHP中使用特殊字符对数组进行排序

说明:-

  1. 使用array_keys()方法获取数组键

  2. 基于iconv()AND strcmp()功能对键进行排序

  3. 迭代排序的键数组并从初始数组中获取它们的相应值.将此键值对保存到结果数组中

如下所示: -

<?php

setlocale(LC_ALL, 'sl_SI.utf8');

$a = [
   '?' => [12],  
   'a' => [23],
   'š' => [45], 
   'u' => [56] 
];


$index_array = array_keys($a);

function compareASCII($a, $b) {
    $at = iconv('UTF-8', 'ASCII//TRANSLIT', $a);
    $bt = iconv('UTF-8', 'ASCII//TRANSLIT', $b);
    return strcmp($at, $bt);
}

uasort($index_array, 'compareASCII');

$final_array = [];
foreach($index_array as $index_arr){

$final_array[$index_arr] = $a[$index_arr];
}

print_r($final_array);
Run Code Online (Sandbox Code Playgroud)

输出: - https://eval.in/990872

参考:-

的iconv()

STRCMP()

uasort

  • 那么[`sort($ index_array,SORT_LOCALE_STRING);`](http://php.net/manual/en/function.sort.php)?为什么使用`iconv()`和`strcmp()`进行比较更好?:-) (2认同)