简体   繁体   English

按值排序多维数组

[英]Sorting Multidimensional Array by the Values

I have the following array. 我有以下数组。

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
          )
    )

I need to trasform the above array into the following 我需要将上面的数组转换成以下内容

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
          )

    )

I have used array_multisort() but it didn't work 我使用了array_multisort()但它没有用

Is it possible to sort ? 有可能排序吗?

usort like: usort喜欢:

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

Try this one : assuming you have array in $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);

While as noted in a comment, the most efficient method in this case is to sort in the database query, here's an example of how you'd do it with array_multisort , which is a lot more efficient than usort : 虽然如评论中所述,在这种情况下最有效的方法是对数据库查询进行排序,这是一个如何使用array_multisort进行排序的示例,这比使用usort更有效:

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

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM