2011-02-24 164 views
0

我有以下數組。按值排序多維數組

Array (
     [0] => Array(
       [vendorid] => 36 
       [vendorname] => Nothin' But A Muffin 
       [vendorfriendlyname] => nothin-but-a-muffin 
     ) 
     [1] => Array(
       [vendorid] => 52 
       [vendorname] => Montalto Olive Grove 
       [vendorfriendlyname] => montalto-olive-grove 
     ) 
     [2] => Array(
       [vendorid] => 44 
       [vendorname] => Kuki Kids 
       [vendorfriendlyname] => kuki-kids 
     ) 
     [3] => Array(
       [vendorid] => 47 
       [vendorname] => pasApas 
       [vendorfriendlyname] => pasapas 
     ) 
     [4] => Array(
       [vendorid] => 89 
       [vendorname] => Organic Family 
       [vendorfriendlyname] => organic-family 
     ) 
    ) 

我需要上述陣列trasform分爲以下

Array (
     [0] => Array(
       [vendorid] => 44 
       [vendorname] => Kuki Kids 
       [vendorfriendlyname] => kuki-kids 
     ) 
     [1] => Array(
       [vendorid] => 52 
       [vendorname] => Montalto Olive Grove 
       [vendorfriendlyname] => montalto-olive-grove 
     ) 
     [2] => Array(
       [vendorid] => 36 
       [vendorname] => Nothin' But A Muffin 
       [vendorfriendlyname] => nothin-but-a-muffin 
     ) 
     [3] => Array(
       [vendorid] => 89 
       [vendorname] => Organic Family 
       [vendorfriendlyname] => organic-family 
     ) 
     [4] => Array(
       [vendorid] => 47 
       [vendorname] => pasApas 
       [vendorfriendlyname] => pasapas 
     ) 

    ) 

我已經用在array_multisort(),但它沒有工作

是否有可能進行排序?

+0

你是從數據庫中獲取這個數組嗎?如果不是,它是如何構建的? – 2011-02-24 12:16:03

+0

是的,這個數組從數據庫中檢索 – kushalbhaktajoshi 2011-02-24 12:18:03

+1

那麼最有效的方法是在查詢中使用'ORDER BY vendorname'。 – 2011-02-24 12:20:23

回答

0

試試這個:假設你有$排陣

function cmp($a, $b) 
{ 
    return strcmp($a["vendorname"], $b["vendorname"]); 
} 

$array = $rows; 
usort($array, "cmp"); 

while (list($key, $value) = each($array)) { 
    $new[] =$value ; 
} 
echo "<pre>"; 
print_r($new); 
2

usort像:

function compare($a, $b) 
    {   
     return strcmp($a['vendorname'], $b['vendorname']); 
    } 
    usort($array, "compare"); 
+0

這不起作用 – kushalbhaktajoshi 2011-02-24 12:19:03

0

雖然作爲一個評論指出,在這種情況下,最有效的方法是排序中數據庫查詢,下面是一個例子,說明如何使用array_multisort,這比usort更有效:

$rows = $vendors = array(); 
while ($row = mysql_fetch_assoc($res)) { 
    $vendors[] = $row['vendorname']; 
    $rows[] = $row; 
} 
array_multisort($rows, $vendors, SORT_ASC);