Php 按值对多维数组排序

Php 按值对多维数组排序,php,multidimensional-array,Php,Multidimensional Array,我有以下数组 Array ( [0] => Array( [vendorid] => 36 [vendorname] => Nothin' But A Muffin [vendorfriendlyname] => nothin-but-a-muffin ) [1] => Array( [vendorid

我有以下数组

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
          )
    )
我需要将上面的数组转换为以下数组

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(),但它不起作用

可以排序吗?

类似于:


试试这个:假设您有$rows中的数组

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);
函数cmp($a,$b)
{
返回strcmp($a[“vendorname”],$b[“vendorname”]);
}
$array=$rows;
usort($数组,“cmp”);
while(列表($key,$value)=每个($array)){
$new[]=$value;
}
回声“;
印刷(新);

如注释所述,在这种情况下,最有效的方法是在数据库查询中排序,下面是一个使用
array\u multisort
进行排序的示例,它比
usort
高效得多:


您是否从数据库获取此数组?如果没有,它是如何构造的?是的,这个数组是从数据库中检索的,那么最有效的方法是在查询中使用
orderbyvendorname
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);
$rows = $vendors = array();
while ($row = mysql_fetch_assoc($res)) {
    $vendors[] = $row['vendorname'];
    $rows[] = $row;
}
array_multisort($rows, $vendors, SORT_ASC);