Проблема с выводом варианта из цикла foreach

Используя PHP, я настраиваю вариант в цикле foreach, и у меня возникают проблемы с его выводом. В приведенном ниже примере я вывожу только один $variant, хотя на самом деле в переменной $variantData их 3. Как я могу перебрать каждый $variant и вывести их?

// Loop to find each variants ID
<? foreach ($variantsData as $variantData) {

    $variant = array(
        'id'            => $variantData['variation_id'],
    );
} ?>

// Output each variants ID
<? print_r( $variant['id'] ) ?>
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
2
0
106
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Просто добавьте [], чтобы добавить массив. Вы просто перезаписываете переменную $variant каждый раз в цикле foreach(). Вот почему вы выводите только один $variant, когда на самом деле их 3 в переменной $variantData.

// Loop to find each variants ID
<? foreach ($variantsData as $variantData) {
    $variant[] = array('id'=> $variantData['variation_id']); // see this line
          //^^
   // Output each variants ID
   print_r($variant);
} ?>

// Output all variants ID
<? print_r( $variant) ?>

Теперь, чтобы получить доступ к конкретному идентификатору варианта, вы также должны использовать индекс, например, чтобы получить первый идентификатор варианта, вы можете использовать

print_r($variant[0]['id']);

РАБОЧАЯ ДЕМО:https://3v4l.org/Wf9TE

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

<? foreach ($variantsData as $variantData) {
    // Output each variants ID
    echo $variantData['variation_id'];
    $variant[] = $variantData['variation_id']; // see this line
} ?>

// Output all variants ID
<? print_r( $variant) ?>

Чтобы получить идентификатор каждого варианта внутри цикла foreach()

<? foreach ($variantsData as $variantData) {
    $variant = $variantData['variation_id']; // see this line
    // Output each variants ID
    echo $variant;
} ?>

Нет, так как $variant будет содержать проиндексированные значения: $variant[0]['id'], $variant[1]['id'] и $variant[2]['id']

Thierry Leroux 18.07.2019 18:13

Боюсь, это не работает. Я просто получаю пустой вывод

dungey_140 18.07.2019 18:14

@dungey_140 взгляните на мою правку еще раз, надеюсь, на этот раз вы поймете, что я имею в виду, спасибо, приятель :) удачи

Always Sunny 18.07.2019 18:20

Спасибо за это, однако я хочу избежать использования чего-то вроде $ variant[0]['id'], поскольку он нацелен только на один элемент, я просто хочу буквально перечислить все 3 идентификатора $ variant?

dungey_140 18.07.2019 18:31

@dungey_140 У меня снова есть ОТРЕДАКТИРОВАНО мой ответ в соответствии с вашим комментарием, посмотрите еще раз :)

Always Sunny 18.07.2019 18:45

Спасибо за это. Хотя это работает для прямого вывода идентификаторов, я, очевидно, уже настроил массив с именем $variant в предыдущем цикле foreach. Я хочу получить доступ к этому массиву, так как я установил гораздо больше данных, чем просто идентификатор, поэтому использование вашего подхода даст мне много кода и повторений. Могу ли я просто получить доступ к $ variant, но для каждого из элементов в $ VariantsData?

dungey_140 18.07.2019 18:50

@dungey_140 Перепроверьте мое редактирование, echo $variant; напечатает каждое значение $variant

Always Sunny 18.07.2019 18:52

К сожалению, мы не на одной волне. Я хочу вывести $variant['id'], а не повторять $variantData['variation_id']; так как это будет очень долго и громоздко для количества элементов, которые у меня есть в массивах. Конечно, поскольку у меня уже есть настройка этого массива, должно быть легко просто выполнить цикл и повторить существующий массив?

dungey_140 18.07.2019 19:03

Давайте продолжить обсуждение в чате.

Always Sunny 18.07.2019 19:04

Другие вопросы по теме