Группируйте строки из набора результатов запроса по двум столбцам, чтобы сформировать иерархический многомерный массив.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»