У меня есть массив такого типа, который я получил из результата 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
Группируйте строки из набора результатов запроса по двум столбцам, чтобы сформировать иерархический многомерный массив. ⇐ Php
Кемеровские программисты php общаются здесь
1737352567
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'];
}
}
Подробнее здесь: [url]https://stackoverflow.com/questions/52301733/group-rows-from-a-query-result-set-by-two-columns-to-form-a-hierarchical-multidi[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия