Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Конкатенация элементов многомерного массива php

Цири Ведьмачка Ученик (102), закрыт 4 года назад
Столкнулась с проблемой... Помогите пожалуйста решить.

Ситуация такая
Есть отдельная таблица (momental) в ней значения id товаров, кол-во, цена, валюта и т. д
Есть 2 массива городов, а могут быть и 10, мне нужно все перебрать и соединить все momental_city
Вывод из БД

Код вывода:
$all = getAll("SELECT * FROM uni_momental WHERE momental_tovar_id={$array_data["tovar"]['ads_id']}");
print_r($all);

Задача нужно сложить эти массивы в один большой массив этих значений
Мне в конце нужен такой результат:
["1133","1134","1142","1143","1144"]
Конкатенация многомерного массива php это где то близко, но не совсем помогла...

Для управления массивом momental_city (добавить/удаленить/обновить) в таблице MySQL
Скриншот прилагаю
Дополнен 4 года назад
Изначально массив заносила в JSON. Что бы легче было работать
Лучший ответ
Андрей Высший разум (481135) 4 года назад
Если $data - массив со структурой, представленной на скриншоте, то в современном PHP будет что-то вроде такого:

$result = array_merge(...array_column($data, 'momental_city'));

... -это не ошибка, а операция распаковки массива в список параметров функции.

В более древнем PHP:

$result = call_user_func_array('array_merge', array_map(function($row) { return $row['momental_city']; }, $data));

Я исходил из того, что в momental_city находится массив. Если там строка, содержащая JSON, код немного усложнится.

$result = array_merge(...array_map('json_decode', array_column($data, 'momental_city')));

Или:

$result = call_user_func_array('array_merge', array_map(function($row) { return json_decode($row['momental_city']); }, $data));

Если надо убрать повторяющиеся значения:

$result = array_unique($result);
Цири ВедьмачкаУченик (102) 4 года назад
Изначально массив заносила в JSON. Что бы легче было работать
Остальные ответы
Похожие вопросы