2013-05-04 44 views
2

下面的代碼應該把蘋果後的香蕉,而是它走到了盡頭。PHP非區分大小寫排序不起作用

$json='{"apple":null,"orange":["s","s2"],"pear":null}'; 

$json=json_decode($json,true); 

$json['Banana']=NULL; 

ksort ($json, SORT_NATURAL | SORT_FLAG_CASE); 

print_r($json); 
+2

[Can not Reproduce](http://codepad.viper-7.com/dJZxij)。 – Rikesh 2013-05-04 18:09:28

+0

似乎只有在PHP 5.4中才有效。 – user1209203 2013-05-04 18:11:09

+0

您最有可能使用PHP版本<5.4 [_「5.4.0添加了對sort_flags的SORT_NATURAL和SORT_FLAG_CASE的支持」_](http://www.php.net/manual/en/function.sort.php) – Wrikken 2013-05-04 18:12:51

回答

0

SORT_NATURALSORT_FLAG_CASE僅在PHP版本> 5.4.0

從這裏工作: 在更新日誌

5.4.0 Added support for SORT_NATURAL and SORT_FLAG_CASE as sort_flags 
0
function natksort(&$array) { 
    $keys = array_keys($array); 
    natcasesort($keys); 

    foreach ($keys as $k) { 
     $new_array[$k] = $array[$k]; 
    } 

    $array = $new_array; 
    return true; 
} 

$json='{"apple":null,"orange":["s","s2"],"pear":null}'; 
$json=json_decode($json,true); 
$json['Banana']=NULL; 

natksort($json); 

print_r($json); 

結果http://www.php.net/manual/en/function.sort.php

Array 
(
    [apple] => 
    [Banana] => 
    [orange] => Array 
     (
      [0] => s 
      [1] => s2 
     ) 

    [pear] => 
)