Intereting Posts
Как получить пользовательские параметры программно в Magento отправлять массивы данных с php на javascript php mail () Идет спам, но когда он отправляется через SMTP-сервер, он работает нормально? Active Collab уведомляет пользователя при создании, закрытии или повторной открытии задачи с помощью API db2_fetch_assoc () не выполняется на полпути через итерацию по набору результатов Ошибка воспроизведения демонстрации «Вы не можете определить элемент последовательности, когда в картировании» Найдите подходящие открытые / закрытые скобки получение переменных формы с помощью JavaScript получать результат от команды shell_exec по мере запуска команды как загрузить doc и docx в php? Создание пользовательских «html» -tags для CMS? Включение файлов по относительной траектории Как выбрать долготу, широту вокруг определения местоположения от mysql? Кнопка «Назад» PHP и браузера – что действительно происходит jQuery итерация по столбцу таблицы

PHP Хранить ключевое значение из ассоциативного массива в простой массив

У меня возникли проблемы, обертывая мою голову вокруг, любая помощь будет БОЛЬШОЙ

У меня есть массив $ stores, который структурирован так:

Array ( [0] => Array ( [id] => 123 [name] => 'Store A' ) [1] => Array ( [id] => 345 [name] => 'Store B' ) [2] => Array ( [id] => 567 [name] => 'Store C' ) [3] => Array ( [id] => 789 [name] => 'Store D' ) ) 

Я хочу извлечь значения id из этого массива в простой массив, который выглядит так:

 $simple = array(123,345,567,789); 

Если вы используете php 5.5+, array_column () весьма полезен:

 $simple = array_column($yourarray,'id'); 

http://php.net/array_column

Calimero определенно был лучший ответ для PHP 5.5+, но если вы хотите иметь такую ​​же функциональность в предыдущих версиях, проверьте этот репозиторий: https://github.com/ramsey/array_column . Он написан самим создателем PHP 5.5 array_column .

Если вы не можете использовать array_column , вы можете использовать array_map :

 $names = array( array('id' => 123, 'name' => 'A'), array('id' => 456, 'name' => 'B'), array('id' => 789, 'name' => 'C'), ); $ids = array_map(function ($name) { return $name['id']; }, $names); var_dump($ids); // output array(3) { [0] => int(123) [1] => int(456) [2] => int(789) } 

Вы можете просто использовать следующий синтаксис, если вы не можете обновить версию php. В этом случае используйте if (!function_exists('array_column')) чтобы предотвратить повторное объявление функции, которая может возникнуть при обновлении версии.

Описание С php.net

array_column () возвращает значения из одного столбца массива, идентифицированного с помощью column_key. При желании вы можете указать index_key для индексации значений в возвращаемом массиве значениями из столбца index_key во входном массиве.

 /* Function array_column equivalent to php's array_column */ if (!function_exists('array_column')) { function array_column(array $array, $column_key, $index_key = NULL) { if (isset($array)) { $return = array(); foreach ($array as $a) { if ($index_key) { if (!isset($a[$index_key])) { return array(); } else { $return[$a[$index_key]] = $a[$column_key]; } } else { $return[] = $a[$column_key]; } } return $return; } return array(); } } 

Вот несколько примеров, взятых из PHP.NET

 <?php $records = array( array( 'id' => 2135, 'first_name' => 'John', 'last_name' => 'Doe', ), array( 'id' => 3245, 'first_name' => 'Sally', 'last_name' => 'Smith', ), array( 'id' => 5342, 'first_name' => 'Jane', 'last_name' => 'Jones', ), array( 'id' => 5623, 'first_name' => 'Peter', 'last_name' => 'Doe', ) ); $first_names = array_column($records, 'first_name'); print_r($first_names); ?> 

Это даст ниже выход:

 Array ( [0] => John [1] => Sally [2] => Jane [3] => Peter ) 

Получить столбец с именами из набора записей, индексированный столбцом «id»

 <?php $last_names = array_column($records, 'last_name', 'id'); print_r($last_names); ?> 

Он даст вам выход, как показано ниже:

 Array ( [2135] => Doe [3245] => Smith [5342] => Jones [5623] => Doe ) 
 $simple = []; foreach ($stores as $store){ $simple[] = $store['id']; }