Группируйте строки из набора результатов запроса по двум столбцам, чтобы сформировать иерархический многомерный массив.Php

Кемеровские программисты php общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 Группируйте строки из набора результатов запроса по двум столбцам, чтобы сформировать иерархический многомерный массив.

Сообщение Anonymous »

У меня есть массив такого типа, который я получил из результата SQL.

+-------------+---------------+-----------------+----------------+
| business_id | business_name | business_branch | branch_contact |
+-------------+---------------+-----------------+----------------+
| 1 | ABC | 1 | 1111111111 |
+-------------+---------------+-----------------+----------------+
| 1 | ABC | 2 | 2222222222 |
+-------------+---------------+-----------------+----------------+
| 1 | ABC | 3 | 3333333333 |
+-------------+---------------+-----------------+----------------+
| 1 | ABC | 4 | 4444444444 |
+-------------+---------------+-----------------+----------------+
| 2 | XYZ | 1 | 5555555555 |
+-------------+---------------+-----------------+----------------+
| 2 | XYZ | 2 | 6666666666 |
+-------------+---------------+-----------------+----------------+


Сначала я думал о том, чтобы сделать отдельный запрос к базе данных для каждого филиала и предприятия. Но узнал, что это плохая практика.

Я хочу построить результаты следующим образом

[
{
business_id : 1,
business_name : ABC,
branches : [
{
branch_id : 1,
branch_contact : 1111111111
},
{
branch_id : 2,
branch_contact : 2222222222
},
...
},
{
business_id : 1,
business_name : ABC,
branches : [
{
...
}
}
]
}


Текущая функция, которую я пытаюсь создать, не дает необходимого результата. Это показано ниже.

$previousBusiness = '';
$previousBranch = '';
$businessAndBranchArray = [];
$businessArray = [];
$branchArray = [];

foreach ($results as $result) {
$currentBranch = [];
$currentBusiness = [];
$currentMerchant = [];

if($result['business_id'] != $previousBusiness && $result['branch_id'] != $previousBranch){

if($previousBranch != '' && $previousBusiness != ''){

$businessArray['business_id'] = $result['business_id'];
$businessArray['business_id'] = $result['business_name'];

$branchArray['branch_id'] = $result['branch_id'];
$branchArray['branch_contact'] = $result['branch_contact'];

} else {

$businessArray['business_id'] = $result['business_id'];
$businessArray['business_id'] = $result['business_name'];

$branchArray['branch_id'] = $result['branch_id'];
$branchArray['branch_contact'] = $result['branch_contact'];
}
$previousBusiness = $result['business_id'];

} else {
$branchArray['branch_id'] = $result['branch_id'];
$branchArray['branch_contact'] = $result['branch_contact'];
}

}


Подробнее здесь: https://stackoverflow.com/questions/523 ... al-multidi
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Php»