Intereting Posts
Отображение содержимого строк mysql в таблице html с использованием php Codeigniter: невозможно подключиться к серверу базы данных, используя предоставленные настройки Сделать URL-адрес, чувствительный к SEO, (исключить идентификатор). Как добавить 1 месяц на дату без пропусков, т.е. февраль Laravel 5.1 – получить текущий маршрут Обфускание строковых значений в исходном коде PHP Как создать пользовательские файлы php.ini для каждого виртуального хоста? Композитор, игнорирующий файл компоновщика zip dependecies 'composer.json Извлечение десятичного или целочисленного из строки в php Неустранимая ошибка: Class 'CDbTestCase' не найден yii framework Phpseclib подключает сервер MYSQL Как удалить данные из базы данных с помощью переключателя в php? Как вручную интерполировать строку? Ларавель красноречиво считает соотношение Как обновить забытое паролем, отправив электронное письмо в mysql php

Объединить массив в соответствии со значениями столбцов соответствия в PHP

Я хочу объединить две базы массивов на соответствие значения столбца. Вот мои 2 массива.

$array1 = array(2) { [0] => array(2) { ["total_process_per_category"] => string(2) "6" ["category_id"] => string(1) "1" } [1] => array(2) { ["total_process_per_category"] => string(1) "2" ["category_id"] => string(1) "2" } } $array2 = array(2) { [0] => array(2) { ["total_pinned_per_category"] => string(2) "16" ["category_id"] => string(1) "1" } [1] => array(2) { ["total_pinned_per_category"] => string(1) "4" ["category_id"] => string(1) "2" } } 

то, что я хочу получить с этими двумя массивами, – вот что.

 array(2) { [0] => array(3) { ["total_process_per_category"] => string(2) "6" ["total_pinned_per_category"] => string(2) "16" ["category_id"] => string(1) "1" } [1] => array(3) { ["total_process_per_category"] => string(2) "2" ["total_pinned_per_category"] => string(1) "4" ["category_id"] => string(1) "2" } } 

так как вы можете видеть, что два массива имеют один и тот же ключ ['category_id'] и одинаковое значение.

поэтому то, что я хочу выполнить, – это результат, который ['total_process_per_category'] и ['total_pinned_per_category'] размещаются вместе на одной базе массивов на их ['category_id'].

Я получил это, используя вложенный foreach. но для меня это выглядит так уродливо. так что любые предложения?

вы можете попробовать array_reduce :

 $someVariable = 'someValue'; $result = array_reduce(array_merge($array1, $array2), function ($carry, $item) use ($someVariable) { if (isset($carry[$item['category_id']])) { $carry[$item['category_id']] = array_merge($carry[$item['category_id']], $item); } else { $carry[$item['category_id']] = $item; } return $carry; }, array()); var_dump($result);