PHP排序数组,使用捷克语编码,不区分大小写,无需重新编制索引

时间:2017-04-24 11:46:12

标签: php arrays sorting

我有多维问题:)我有一个数组,其中包含:

array (33)
18 => "D3 0309/II Ševětín – Borek" (31)
19 => "D3 0311 TŘEBONÍN – KAPLICE NÁDRAŽÍ" (41)
25 => "D3 0312/I Kaplice nádraží - Nažidla" (39)
26 => "D3 0312/II - Nažidla - Dolní Dvořiště státní hranice" (59)
27 => "D3 TEST" (7)
15 => "D30310_Hodějovice-Třebonín" (29)
30 => "D4 Lety - Čimelice" (19)
29 => "D4 Milín - Lety" (16)
32 => "D4 Mirotice rozšíření" (25)
20 => "D4 křižovatka II/118 – Milín, DSP" (38)
31 => "D4 Čimelice - Mirotice" (23)
13 => "D6 Lubenec obchvat 1.etapa" (26)
23 => "D6 Nové Strašecí-Řevničov" (30)
6 => "D6 Řevničov obchvat" (21)
33 => "D8 MÚK Zdiby – rozšíření Prosecké radiály, etapa 2 – direktní větev" (80)
12 => "I/21 Trstěnice - Drmoul" (24)
2 => "I/37 Chrudim - obchvat, úsek křiž. I/17 - Slatiňany" (55)
44 => "Jirka (ostatni nesahat) - import Valbek" (39)
17 => "Klatovy" (7)
37 => "Letiste Pribram" (15)
24 => "Optimalizace traťového úseku Mstětice – Praha - Vysočany" (63)
34 => "Radost II" (9)
7 => "SOKP 512 "D1-Jesenice - Vestec" Psáry - přeložka silnice II/105" (66)
14 => "Stavba - návod" (15)
43 => "Test ě+ščřžýáíé0123465789 sss" (38)
4 => "Testovací stavba" (17)
39 => "Videnska" (8)
38 => "Vratislavice" (12)
36 => "Zvýšení kapacity trati Nymburk – Mladá Boleslav, 2.stavba" (63)
41 => "jirka test 4" (12)
22 => "test" (4)
35 => "test-D4 křižovatka II/118 – Milín" (38)
45 => "čtest" (6)

首先,我必须保留索引,因为它们在select查询中被视为ID。其次,我必须排序不区分大小写,第三,我需要用捷克编码对它进行排序。我寻找了一些帮助,但没有任何对我有用。 我将包含当前代码,该代码使用uasortstrcoll,但它对区分大小写进行排序,并且甚至不适用于捷克语编码...

setlocale(LC_COLLATE, 'cs_CZ.utf8');
uasort($options, 'strcoll');

也尝试了这个,但结果相同......

setlocale(LC_COLLATE, 'cs_CZ.utf8');
asort($options, SORT_LOCALE_STRING);

2 个答案:

答案 0 :(得分:0)

编写排序函数并先降低。

setlocale(LC_COLLATE, 'cs_CZ.utf8');
function sortme ($a,$b){
    $a = mb_strtolower($a);
    $b = mb_strtolower($b);
    return strcoll($a,$b);
}

$options = array('Ša','šb','Šc','šd');
uasort($options, 'sortme');
print_r($options);

//result with strtolower
//Array ( [0] => Ša [1] => šb [2] => Šc [3] => šd )

//result without mb_strtolower
//Array ( [0] => Ša [2] => Šc [1] => šb [3] => šd )

答案 1 :(得分:0)

所以我终于用我想要避免的方式解决了它。

         module: {
           loaders: [
              { test: /\.(js|jsx)$/,
                loader: 'babel-loader',
                exclude: /node_modules/,
                query: {
                presets: ['react', 'es2015']
                  }
              },