2014-11-09 96 views
2

查看PHP中natcasesort的文檔,它以不區分大小寫的方式對數組進行排序。但是,當我嘗試重新排列包含相同字母的兩個無序數組並檢查它們是否相等時,它會給我提供假。請看下圖:如何讓PHP natcasesort永久重新排列陣列位置?

$ary=array("b", "z", "A", "C", "S"); 
$ary1=array("A", "z", "b", "S", "C"); 
natcasesort($ary); 
natcasesort($ary1); 
print_r($ary); 
print_r($ary1); 

if ($ary==$ary1) { 
    echo "True"; 
} else { 
    echo "False"; 
} 

我得到的結果是:

Array ([2] => A [0] => b [3] => C [4] => S [1] => z) 

Array ([0] => A [2] => b [4] => C [3] => S [1] => z) 

False 

這顯然是因爲它仍然保存原始數組中的信件的原始位置。如何更改括號中顯示的原始位置以永久性更改爲遞增計數(在這種情況下,大小寫不敏感的字母順序爲0到4)?

回答

4

使用array_values得到新的索引一個新的數組:

natcasesort($ary); 
natcasesort($ary1); 

$ary = array_values($ary); 
$ary1 = array_values($ary1); 

if ($ary == $ary1) { 
    echo "True"; 
} else { 
    echo "False"; 
} 

或者,如果你這樣做了很多建立一個功能:

function natcasesortv(&$array) { 
    natcasesort($array);  
    $array = array_values($array); 
} 
+0

你先生是真棒哈哈 – user2512888 2014-11-09 01:02:39