PHP многомерный массив с SQL-таблицей, как структура и сортировка - PullRequest
1 голос
/ 17 октября 2019

У меня есть многомерный массив, в котором первый индекс содержит цену товаров. Во втором указателе содержатся наименования товаров, а в третьем - данные поставщика. Я хотел бы отсортировать массив по ценам в порядке возрастания. После того, как я выполню сортировку, мне нужно убедиться, что названия товаров и их поставщики по-прежнему соответствуют цене.

Пример:

$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

Есть ли способ сделать это?

1 Ответ

0 голосов
/ 17 октября 2019

Я перестроился в новую структуру массива и затем 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...