具有SQL-Table-like结构和排序的PHP多维数组

问题描述 投票:0回答:1

我有一个多维数组,其中第一索引包含项目的价格。在第二个索引上,包含项目的名称,而供应商详细信息则存储在第三个索引中。我想按价格升序对数组进行排序。完成排序后,我需要确保商品名称和供应商仍与价格一致。

示例:

$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

有没有办法做到这一点?

php arrays sorting multidimensional-array
1个回答
0
投票

我改写为新的数组结构,然后进行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-从输入数组的单个列中返回值]

Demo

输出:-

15 - Peach - Supplier 2
20 - Apple - Supplier 1
25 - Orange - Supplier 5
© www.soinside.com 2019 - 2024. All rights reserved.