php - 具有类似 SQL 表的结构和排序的 PHP 多维数组
问题描述
我有一个多维数组,其中第一个索引包含项目的价格。在第二个索引中,包含项目名称,供应商详细信息存储在第三个索引中。我想通过价格升序对数组进行排序。一旦我进行排序,我需要确保项目名称和供应商仍然与价格一致。
例子:
$data = array();
$data["price"][0] = 20;
$data["price"][1] = 25;
$data["price"][2] - 15;
$data["name"][0] = "Apple";
$data["name"][1] = "Orange";
$data["name"][2] = "Peach";
$data["supplier"][0] = "Supplier 1";
$data["supplier"][1] = "Supplier 5";
$data["supplier"][2] = "Supplier 2";
/* sorting code here */
Expected result:
15 - Peach - Supplier 2
20 - Apple - Supplier 1
25 - Orange - Supplier 5
有没有办法做到这一点?
解决方案
我改造成新的数组结构,然后 foreach,
$result=[];
foreach ($data as $key => $value) {
for($i=0;$i<count($value);$i++){
$result[$i][$key] = $value[$i]; // $i(int) as key and $key as subkey
}
}
// sorting by price
array_multisort(array_column($result, 'price'), SORT_ASC, $result);
foreach ($result as $value) {
echo implode(" - ", $value)."\n";
}
array_multisort — 对多个或多维数组进行排序
array_column — 从输入数组中的单个列返回值
输出:-
15 - Peach - Supplier 2
20 - Apple - Supplier 1
25 - Orange - Supplier 5
推荐阅读
- reactjs - 两个具有相同元素的孩子做出反应。当我尝试删除其中一个 div 时,它会同时删除
- nvidia - Kubundu 20.04 在 Intel 和 Nvidia GPU 之间切换
- python - 使用深度学习和烧瓶的聊天机器人。但机器人没有给出回应
- reactjs - 无法通过 props 导入的图片
- c - 如何将用逗号分隔的浮点值字符串存储到浮点数组中?
- java - 当我单击 android studio 中的抽屉选项时,没有任何反应
- flutter - 使用 BottomNavigationBar 后“body”不可见:BottomAppBar
- c# - 不能做迁移
- java - 我如何滥用 Java 的 MappedByteBuffer
- xaml - XAML DataTrigger 未更新