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