Установка вложенного массива в переменную при совпадении индекса

Итак, у меня есть большой массив с именем $categoryData, который структурирован следующим образом:

array: [
    123=> array:[
        total:[
            red=> 155
            blue=> 200
        ]
    ]
    456=> array:[
        total:[
            red=> 678
            blue=> 443
        ]
    ]
    376=> array:[
        total:[
            red=> 843
            blue=> 456
        ]
    ]
    236=> array:[
        total:[
            red=> 456
            blue=> 890
        ]
    ]
]

Это нормально, и теперь я зацикливаюсь, чтобы в основном установить объект в массив для правильного индекса, в данном случае 123. Итак, я делаю это:

foreach($categoryData as $data){
    if ($data[0] == 123){
        $printData = $data[0];
    }
}

dd($printData);

Это дает мне ошибку undefined offset: 0 , и я не знаю, почему. Я получаю правильную структуру, если выгружаю ее в цикле foreach, поэтому все, что я хочу сделать, это установить массив для индекса в $printData, когда он совпадает, если это имеет смысл

Что я делаю не так?

Ваш внутренний массив не числовой, он ассоциативный. Почему вы ожидаете, что индекс 0 будет существовать?

El_Vanja 18.12.2020 18:04

И вы сравниваете не на том уровне. Ваш идентификатор — это ключ верхнего уровня, и вы пытаетесь найти его на следующем уровне (где единственный ключ — total).

El_Vanja 18.12.2020 18:10

@el_vanja, поэтому я бы установил только $data, а не $data[0]

Geoff_S 18.12.2020 18:16

@el_vanja индекс 0 существует в массиве categoryData, это то, что я сопоставляю. Затем я хочу, чтобы все внутри этого массива было установлено в переменную printData.

Geoff_S 18.12.2020 18:41
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать 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
4
101
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

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

Я думаю, вы перепутали с ключом и значениями. Согласно вашему примеру, вы должны сравнивать индекс, а не значение:

foreach($categoryData as $key=>$data){
    if (123 === $key){
        $printData = $data;
    }
}

Демо


Но, честно говоря, я не знаю, почему вы хотите повторять foreach, когда вы можете получить свой массив по ключу:

$printData = $categoryData[123];

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