kzen.dev
  • Вопросы
  • Метки
  • Пользователи
Оповещения
Вознаграждения
Регистрация
После регистрации, сможете получать уведомления об ответах и комментариях на Ваши вопросы.
Вход
Если у Вас уже есть аккаунт, войдите чтобы проверить новые уведомления.
Тут будут вознаграждения за добавленные вопросы, ответы и комментарий.
Дополнительно
Источник
Редактировать
Marty Wallace
Marty Wallace
Вопрос

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

У меня есть общий шаблон, для обработки которого, я уверен, в 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 из каждого подмассива, которых может быть любое количество.

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

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

$preparedSubs = array();

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

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

31 2012-04-22T13:32:20+00:00 2
 cmbuckley
cmbuckley
Редактировал вопрос 8-го июля 2015 в 3:27
Программирование
arrays
php
Решение / Ответ
 cmbuckley
cmbuckley
22-го апреля 2012 в 1:37
2012-04-22T13:37:30+00:00
Дополнительно
Источник
Редактировать
#16003651

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

$key = 'key1';

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

Начиная с PHP 5.5, для этого теперь есть функция array_column (см. COil's answer).

 Community
Community
Редактировал ответ 23-го мая 2017 в 12:26
39
0
 COil
COil
21-го января 2015 в 11:09
2015-01-21T11:09:20+00:00
Дополнительно
Источник
Редактировать
#16003652

Начиная с версии 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"
}

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

 COil
COil
Редактировал ответ 1-го июня 2015 в 10:16
26
0
Похожие сообщества 22
phpGeeks
phpGeeks
4 759 пользователей
Best PHP chat @phpGeeksJunior - новичкам @golangGeeks - гошка @jobGeeks - вакансии(250000 р/мес) @dbGeeks - базы данных @ebanoePhp - канал о PHP @laravel_pro - Laravel @jsChat - JS @moscowProgers - Москва Реклама: https://vk.cc/cbJtVV ДР - 28.03.2016
Открыть telegram
PHP — вакансии, поиск работы и аналитика
PHP — вакансии, поиск работы и аналитика
4 188 пользователей
Публикуем вакансии и запросы на поиск работы по направлению PHP, Laravel, Symfony, Yii etc. Full/par-time, remote и т.д. ПРАВИЛА: https://t.me/php_jobs/45345 Флудильня: @phpimhorus More: @javascript_jobs, @nodejs_jobs, @devops_jobs, @sql_jobs
Открыть telegram
phpGeeksJunior
phpGeeksJunior
2 980 пользователей
Группа для новичков. Не стесняйтесь задавать вопросы по php. Не флудить!!!! Реклама: https://vk.cc/cbJtVV Правила и полезные ссылки https://github.com/phpgeeks-club/faq Бест от пхпгикс https://t.me/best_of_phpgeeks
Открыть telegram
#php chat
#php chat
2 827 пользователей
Группа для новичков и бывалых. Не стесняйтесь задавать вопросы по php. Уважаем друг друга Администрация: @faramanx Сотрудничество: @adskiy_tony
Открыть telegram
PHP
PHP
2 742 пользователей
Группа про современный PHP. Обсуждаем ООП, TDD, BDD, DDD, SOLID, GRASP и прочие крутые базворды правила чата: https://gist.github.com/fesor/6c8b162ac1e2fe4d6f227341ec8eaadf Группа PHP для новичков @phpGeeksJunior Вакансии: https://t.me/fordev
Открыть telegram
PHP.Zone Chat - Сообщество PHP-разработчиков
PHP.Zone Chat - Сообщество PHP-разработчиков
1 682 пользователей
Чат PHP разработчиков от проекта https://php.zone Общаемся по делу. Для оффтопика отдельный чат @php_zone_offtop
Открыть telegram
Добавить вопрос
Категории
Все
Технологий
Культура / Отдых
Жизнь / Искусство
Наука
Профессии
Бизнес
Пользователи
Все
Новые
Популярные
1
Ilya Smirnov
Зарегистрирован 5 дней назад
2
Денис Васьков
Зарегистрирован 1 неделю назад
3
Dima Patrushev
Зарегистрирован 1 неделю назад
4
sirojidddin otaboyev
Зарегистрирован 2 недели назад
5
Елена Гайдамамакинат
Зарегистрирован 2 недели назад
KO
RU
© kzen.dev 2023
Источник
stackoverflow.com
под лицензией cc by-sa 3.0 с атрибуцией