2012-04-27 87 views
0
<?php 
$rate=array ("M100B1000" => "40.00", "M1000B20000" => "80.00", "M500B10000" => "50.00", "MUnlimitedBUnlimited" => "240.00", "M5000BUnlimited" => "120.00 ") ; 
ksort($rate); 
print_r($rate); 
?> 

它给分拣率数组排序..PHP数组键与字符串和数字

M1000B20000 
M100B1000 
M5000BUnlimited 
M500B10000 
MUnlimitedBUnlimited 

我需要这个排序..

M100B1000 
M500B10000 
M1000B20000 
M5000BUnlimited 
MUnlimitedBUnlimited 

给一些想法...

+1

你想它由字符串或里面的数值的长度排序? – Anirudh 2012-04-27 05:38:47

+0

排序不会**数字,这只是一个简单的A-Z字符串排序comparisson,所以'M100B'不会在'M1000B'(多余的0)之前。您将不得不手动排序/ reg表达式。 – Jakub 2012-04-27 05:39:17

回答

1

它看起来像你想根据字符串的大小对它进行排序,如果是的话看看这个例子

更多的解释在这里http://php.net/manual/en/function.sort.php

function shortestFirst(key($str1), key($str2)) { 

     return strlen(key($str1)) - strlen(key($str2)); 

    } 
    $rate=array ("M100B1000" => "40.00", "M1000B20000" => "80.00", "M500B10000" => "50.00", "MUnlimitedBUnlimited" => "240.00", "M5000BUnlimited" => "120.00 "); 


    uasort($data, 'shortestFirst'); 
     print_r($data); 
     echo '</pre>'; 
+0

M100B1000, M500B10000, M1000B20000,MUnlimitedBUnlimited M5000BUnlimited,最后是改变 – Vaishu 2012-04-27 05:37:38

+0

嗯尝试使用..完美排序利用按键 – 2012-04-27 05:40:03

+0

键.. – Vaishu 2012-04-27 05:43:14