Intereting Posts
Как установить этот заголовок soap php? Codeigniter & HTML5 – попытка одновременного загрузки нескольких изображений Как получить контакт по электронной почте с помощью google api. PHP Класс PharData завершается с ошибкой, когда содержимое tar имеет относительные пути Скорость соединения PHP IMAP Отправить URL через переменную AJAX / PHP без обновления страницы, переменной загрузки Форматировать текст в файле Excel через PHP Symfony2 и Doctrine2: идентификатор / первичный ключ для объекта «X» не указан. Каждый объект должен иметь идентификатор / первичный ключ Как передать целочисленное значение JS, которое находится в целочисленной переменной PHP? Запустить PHP-скрипт, как приложение без браузера Rijndael 256 Шифровать / расшифровывать между c # и php? Заменить кавычки php string PHP foreach не работает с sub-array PHP: получить имя браузера Добавить пробел для изображения и сохранить файл на сервер

PHP Как слить массив объектов с массивом массивов

Во-первых, извините за длительное объяснение. У меня есть два массива в PHP. Первый массив – это массив объектов. Второй массив – это массив массивов. В принципе, я хочу выполнить цикл и объединить объект с его соответствующим массивом и вернуть объединенный объект.

См. Следующий массив print_r() массива объектов:

 Array ( [0] => stdClass Object ( [gear] => helloworld [status] => running [started] => 40 Minutes Ago [start] => index.js [route] => 127.0.0.1:3000 [parameters] => Array ( ) ) [1] => stdClass Object ( [gear] => test [status] => stopped [started] => [start] => index.js [route] => [parameters] => Array ( ) ) [2] => stdClass Object ( [gear] => test2 [status] => stopped [started] => [start] => index.js [route] => [parameters] => Array ( [0] => first [1] => second [2] => third ) ) ) 

См. Следующий массив print_r() массива массивов:

 Array ( [0] => Array ( [gear] => helloworld [machine_id] => E6z5ekvQ [created_by] => 10010 [modified_by] => 10010 [created] => 2011-09-22T16:30:11-07:00 [modified] => 2011-09-22T16:30:11-07:00 ) [1] => Array ( [gear] => test [machine_id] => E6z5ekvQ [created_by] => 10010 [modified_by] => 10010 [created] => 2011-09-22T16:44:25-07:00 [modified] => 2011-09-22T16:44:25-07:00 ) [2] => Array ( [gear] => test2 [machine_id] => E6z5ekvQ [created_by] => 10010 [modified_by] => 10010 [created] => 2011-09-22T16:45:43-07:00 [modified] => 2011-09-22T16:45:43-07:00 ) ) 

Таким образом, основной ключ для обоих gear . Таким образом, мы должны соответствовать передаче от первого объекта, со второй передачей в массиве и возвращать что-то вроде:

 stdClass Object ( [gear] => helloworld [status] => running [started] => 40 Minutes Ago [start] => index.js [route] => 127.0.0.1:3000 [parameters] => Array ( ) [machine_id] => E6z5ekvQ [created_by] => 10010 [modified_by] => 10010 [created] => 2011-09-22T16:30:11-07:00 [modified] => 2011-09-22T16:30:11-07:00 ) 

Обратите внимание, что передача объединена в одно свойство объекта, очевидно, передача не появляется дважды. Идеи?

Если бы вы могли индексировать массив по gear или некоторую уникальную ценность, было бы намного проще.

 $indexed = array(); // create an array using 'gear' as the index foreach($arrayValue as $value) { $indexed[$value['gear']] = $value; } // loop over each object foreach($objectArray as $obj) { $value = $indexed[$obj->gear]; // find the corresponding array foreach($value as $name => $val) { $obj->$name = $val; // assign each array index/value pair to the object } } 

Если возможно, чтобы ваш код возвращал массив с индексом по умолчанию, вы можете удалить первый цикл foreach.

Надеюсь, это поможет.