@ZaxapKramer
Больной верстальщик

Можно ли получить данные из массива более коротким путем?

Имеется массив вида:
$array = [
    'I' => [
        'can' => [
            'fly'   => ['alone', 'too', 'with you'],
            'eat'   => ['rise', 'soup', 'your cooking'],
            'dream' => ['alone', 'of you', 'again']
        ],
        'love' => [
            'you'  => ['so much', ':)', 'too']
        ]
    ]
];


Получаю предолжения так:
foreach ($array as $actor => $verbs) {
    foreach ($verbs as $verb => $actions) {
        foreach ($actions as $action => $words) {
            foreach ($words as $word) {
                echo $actor , ' ' , $verb , ' ' , $action , ' ' , $word , '<br>';
            }
        }
    }
}

// I can fly alone
// I can fly too
// I can fly with you
// ...
// I love you too


Глаголы - так:
foreach ($array as $actor => $verbs) {
    foreach ($verbs as $verb => $key) {
        echo $verb , '<br>';
    }
}

// can
// love


Долго мучился с этим.
Если честно, не очень четко понимаю (доки читал, примеры смотрел, практики не хватает, думаю), как именно работают массивы (с $key => $value почти ни разу не сталкивался).
В моей практике массивов практически не было, если не считать конфигурационный файл с данными бд, но тут массив...немного побольше - вызывает трудности))

Мне почему-то кажется, что данные, приведенные выше (особенно глаголы), можно получить не так заумно. Поправьте, если ошибаюсь. Заранее спасибо :)
  • Вопрос задан
  • 223 просмотра
Решения вопроса 1
webinar
@webinar Куратор тега PHP
Учим yii: https://youtu.be/-WRMlGHLgRg
Все нормально, как вариант можно написать через
php.net/array_map
или
php.net/manual/ru/function.array-walk.php
Но в данном случае наверное нет смысла.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
@novrm
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы