首页 > 解决方案 > 具有类似 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

有没有办法做到这一点?

标签: phparrayssortingmultidimensional-array

解决方案


我改造成新的数组结构,然后 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

推荐阅读