2010-09-13 74 views
1

我想排序的字母數組PHP排序數組問題

當我使用ASORT():它的排序,但我得到的結果是首先的,在大寫的名字,之後所有用小寫的名字

,如:

Avi 
Beni 
.. 
.. 
avi 
beni 

如果我要像:

Avi 
avi 
Beni 
beni 
.. 
.. 

我怎麼能做它?

回答

2

所提出的解決方案,到現在爲止,的arent正確,natcasesortusort($改編, 'strcasecmp')解決方案與一些開始陣列配置失敗。

讓我們做一些測試,找到一個解決方案。

<?php 
$array1 = $array2 = $array3 = $array4 = $array5 = array('IMG1.png', 'img12.png', 'img10.png', 'img2.png', 'img1.png', 'IMG2.png'); 

// This result is the one we nee to avoid 
sort($array1); 
echo "Standard sorting\n"; 
print_r($array1); 

// img2.png and IMG2.png are not in the desired order 
// note also the array index order in the result array 
natcasesort($array2); 
echo "\nNatural order sorting (case-insensitive)\n"; 
print_r($array2); 

// img1.png and IMG1.png are not in the desired order 
usort($array3, 'strcasecmp'); 
echo "\nNatural order sorting (usort-strcasecmp)\n"; 
print_r($array3); 

// Required function using the standard sort algorithm 
function mySort($a,$b) { 
    if (strtolower($a)== strtolower($b)) 
    return strcmp($a,$b); 
    return strcasecmp($a,$b); 
} 

usort($array4, 'mySort'); 
echo "\nStandard order sorting (usort-userdefined)\n"; 
print_r($array4); 

// Required function using the natural sort algorithm 
function myNatSort($a,$b) { 
    if (strtolower($a)== strtolower($b)) 
    return strnatcmp($a,$b); 
    return strnatcasecmp($a,$b); 
} 

usort($array5, 'myNatSort'); 
echo "\nNatural order sorting (usort-userdefined)\n"; 
print_r($array5); 

?>

2
+0

它不工作。嘗試對這個數組進行排序:array('IMG1.png','img12.png','img10.png','img2.png','img1.png','IMG2.png'); – Eineki 2010-09-13 08:45:23

4

您可以使用netcasesort()。它使用不區分大小寫的「自然順序」算法對數組進行排序。

做這樣的:

natcasesort($array); 
+1

+1用於添加實際答案而不僅僅是鏈接 – Gordon 2010-09-13 07:57:36

+0

它不起作用。嘗試對這個數組進行排序:array('IMG1.png','img12.png','img10.png','img2.png','img1.png','IMG2.png'); – Eineki 2010-09-13 08:45:49