2011-02-24 166 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);