现在有这样一个二维数组
$inventory = array(
array(\"type\"=>\"fruit\", \"price\"=>3.50),
array(\"type\"=>\"milk\", \"price\"=>2.90),
array(\"type\"=>\"pork\", \"price\"=>5.43),
);
我想通过price对这个二维数组排序,以便得到以下结果:
$inventory = array(
array(\"type\"=>\"pork\", \"price\"=>5.43),
array(\"type\"=>\"fruit\", \"price\"=>3.50),
array(\"type\"=>\"milk\", \"price\"=>2.90),
);
该如何实现呢?
第一种方法:使用php array_multisort()函数。具体代码如何:
$price = array();
foreach ($inventory as $key => $row)
{
$price[$key] = $row[\'price\'];
}
array_multisort($price, SORT_DESC, $inventory);
第二种方法:使用usort函数:
升序排序
usort($inventory, function ($item1, $item2) {
return $item1[\'price\'] <=> $item2[\'price\'];
});
或者降序排序
usort($inventory, function ($item1, $item2) {
return $item2[\'price\'] <=> $item1[\'price\'];
});
第三种方法:自己写一个php函数。
function SortByKeyValue($data, $sortKey, $sort_flags=SORT_ASC)
{
if (empty($data) or empty($sortKey)) return $data;
$ordered = array();
foreach ($data as $key => $value)
$ordered[$value[$sortKey]] = $value;
ksort($ordered, $sort_flags);
return array_values($ordered); *// array_values() added for identical result with multisort*
} 继续阅读与本文标签相同的文章
-
SAML在云上的应用——基础篇
2026-05-17栏目: 教程
-
云服务OpenAPI的7大挑战,架构师如何应对?
2026-05-17栏目: 教程
-
什么是阿里云备案服务号及相关疑问解答 要网站备案的朋友必看!
2026-05-17栏目: 教程
-
《DNS稳定保障系列1--服务双保障“辅助DNS”产品介绍》
2026-05-17栏目: 教程
-
2019年1-8月实现利润前五省份有哪些?
2026-05-17栏目: 教程
