Intereting Posts
ckeditor-ckfinder атрибуты по умолчанию (ширина и высота) для загруженных изображений PHP Looping через рекурсивный массив MYSQL ограничивает доступ пользователей к information_schema PHP устанавливает активную ссылку на странице, используя Служебный файл, размещенный на другом сервере, для загрузки Amazon s3 Эластичный транскодер ERROR: указанный конвейер не найден Скрытые спам-ссылки в шаблоне Joomla Как я могу использовать file_put_contents () с FILE_APPEND | Безопасность LOCK_EX? Не удалось вызвать встроенный метод mb_internal_encoding? Как клонировать массив объектов в PHP? Найти самый старый файл в папке с помощью PHP PHP max_execution_time игнорируется (нет безопасного режима, нет общего хоста, только localhost / windows7 / php 5.3.1 и время ожидания Apache равно 300) Ограничение скорости загрузки с помощью PHP Внедрение Symfony 2 EntityManager в эксплуатацию Laravel 5 UnexpectedValueException в ответ на запрос из-за использования данных POINT

Значения PHP из массива, где ключ находится в другом массиве

По какой-то причине я борюсь с этим.

У меня есть 2 массива. Первый – это стандартный массив, называемый colsArray, который выглядит так:

Array ( [0] => fName [1] => lName [2] => city ) 

Второй – многомерный массив, называемый query_data, который выглядит так:

 Array ( [0] => Array ( [recordID] => xxx [fName] => xxx [lName] => xxx [address1] => xxx [city] => xx [zip] => xxx [vin] => xxx ) [1] => Array ( [recordID] => xxx [fName] => xxx [lName] => xxx [address1] => xxx [city] => xxx [zip] => xxx [vin] => xxx ) [2] => Array ( [recordID] => xxx [fName] => xxx [lName] => xxx [address1] => xxx [city] => xxx [zip] => xxx [vin] => xxx ) [3] => Array ( [recordID] => xxx [fName] => xxx [lName] => xxx [address1] => xxx [city] => xxx [zip] => xxx [vin] => xxx ) 

)

Мне просто нужно использовать эти 2 массива для создания нового массива, который имеет все данные из массива query_data, где ключи находятся в первом массиве colsArray. Новый массив будет выглядеть так:

 Array ( [0] => Array ( [fName] => xxx [lName] => xxx [city] => xx ) [1] => Array ( [fName] => xxx [lName] => xxx [city] => xx ) [2] => Array ( [fName] => xxx [lName] => xxx [city] => xx ) [3] => Array ( [fName] => xxx [lName] => xxx [city] => xx ) ) 

Любая помощь в этом была бы замечательной.

Благодаря!

PHP предлагает множество функций массива , и вы обычно уходите, просто объединяя кучу таких:

 $keys = array_flip($colsArray); $new_data = array(); foreach($query_data as $key => $data) { $new_data[$key] = array_intersect_key($data, $keys); } 

Альтернативно, более функциональный стиль, но более интенсивный объем памяти:

 $new_data = array_map( 'array_intersect_key', // or just array_intersect_key in newer PHP versions $query_data, array_pad(array(), count($query_data), array_flip($colsArray)) ); 
 $finalarr = []; foreach ($query_data as $data) { $arr = []; foreach ($colsArray as $key){ $arr[$key] = $data[$key]; } $finalarr[] = $arr; } 

Обозначение [] для создания массивов является новым, поэтому вам может потребоваться использовать array() .