Intereting Posts
Проверка нескольких значений strpos Как получить идентификатор электронной почты пользователей в приложении Facebook с использованием PHP? PHP Неопределенная константа PHP_ROUND_HALF_DOWN Как обойти или заставить PHP json_decode не изменять мои очень большие целочисленные значения? Регулярное выражение PHP для проверки пароля замените rand () на openssl_random_pseudo_bytes () Какой алгоритм шифрования лучше всего подходит для шифрования файлов cookie? Поиск номеров телефонов в базе данных, игнорирующих специальные символы Отправка XML-данных в webservice с использованием php curl Мой javascript не работает, вам нужна ваша помощь, чтобы исправить ошибку Чтение значения сеанса с помощью Javascript PHP – Получить bool для эхо-фальшивости, когда false Htaccess и учетные записи пользователей AFNetworking 2.0 POST, ошибка Cocoa 3840 (текст JSON не начинался с массива …) PHP – Сделать многомерный ассоциативный массив из строки с разделителями

Получить определенный элемент из каждого вспомогательного массива

У меня есть общий шаблон, в котором я уверен, что в PHP должна быть встроенная функция массива, но она просто не может ее увидеть.

У меня есть несколько массивов, например:

$testArray = array ( 'subArray1' => array( 'key1' => "Sub array 1 value 1", 'key2' => "Sub array 1 value 1" ), 'subArray2' => array( 'key1' => "Sub array 2 value 1", 'key2' => "Sub array 2 value 2" ) ); 

Мне нужно получить значения key1 из каждого subArray, из которых может быть любое число.

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

В настоящее время я использую следующий простой foreach для анализа массивов:

 $preparedSubs = array(); foreach($testArray as $subArray) { $preparedSubs[] = $subArray['key1']; } 

Это так коротко, как я могу это сделать, но, как я уже сказал, я уверен, что есть конструкция PHP, которая справится с этим лучше.

Solutions Collecting From Web of "Получить определенный элемент из каждого вспомогательного массива"

До PHP 5.5 это было бы наиболее эффективным решением:

 $key = 'key1'; $output = array_map(function($item) use ($key) { return $item[$key]; }, $testArray); 

Начиная с PHP 5.5, для этой функции теперь существует функция array_column (см . Ответ Койла ).

Начиная с PHP 5.5 вы можете использовать функцию array_column () :

 $key = 'key1'; $testArray = array ( 'subArray1' => array( 'key1' => "Sub array 1 value 1", 'key2' => "Sub array 1 value 2" ), 'subArray2' => array( 'key1' => "Sub array 2 value 1", 'key2' => "Sub array 2 value 2" ) ); $output = array_column($testArray, $key); var_dump($output); 

Вывод:

 array(2) { [0]=> string(19) "Sub array 1 value 1" [1]=> string(19) "Sub array 2 value 1" } 

Единственное отличие от принятого ответа состоит в том, что вы теряете исходное имя ключа, но я думаю, что это не проблема в вашем случае.