Итак, у меня есть большой массив с именем $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
, когда он совпадает, если это имеет смысл
Что я делаю не так?
И вы сравниваете не на том уровне. Ваш идентификатор — это ключ верхнего уровня, и вы пытаетесь найти его на следующем уровне (где единственный ключ — total
).
@el_vanja, поэтому я бы установил только $data, а не $data[0]
@el_vanja индекс 0 существует в массиве categoryData, это то, что я сопоставляю. Затем я хочу, чтобы все внутри этого массива было установлено в переменную printData.
Я думаю, вы перепутали с ключом и значениями. Согласно вашему примеру, вы должны сравнивать индекс, а не значение:
foreach($categoryData as $key=>$data){
if (123 === $key){
$printData = $data;
}
}
Но, честно говоря, я не знаю, почему вы хотите повторять foreach, когда вы можете получить свой массив по ключу:
$printData = $categoryData[123];
Ваш внутренний массив не числовой, он ассоциативный. Почему вы ожидаете, что индекс
0
будет существовать?