Создание массива внутри массива с помощью foreach

Я просто хочу создать массив внутри массива. После создания этого подмассива я хочу заполнить его foreach.

Что я хочу:

(
[0] => Array
(
[Sıcak İçecekler] => Array
(
[foodId] => 1
[foodName] => Food Name
[foodPrice] => 15.25
)

)

[1] => Array
(
[Et Döner] => Array
(
[foodId] => 2
[foodName] => Another Food From another Cat
[foodPrice] => 6.75
)

))

Мой динамический код

    foreach ($categoryList as $cat) {
$food = [
$cat["catName"] => [
foreach (Food::foodsByCategory($cat["catId"], $db) as $food):
"foodId" => $food["foodId"],
"foodName" => $food["foodName"],
"foodPrice" => $food["foodPrice"]
endforeach;
]
];

array_push($foodsByCategory, $food);
}

синтаксическая ошибка, неожиданный ‘foreach’ (T_FOREACH), ожидание ‘]’

0

Решение

Afaik, PHP не поддерживает этот синтаксис (было бы неплохо для будущей версии ..), поэтому вы должны поместить foreach снаружи и создать временный массив.

$cat["catName"] => [
foreach (Food::foodsByCategory($cat["catId"], $db) as $food):
"foodId" => $food["foodId"],
"foodName" => $food["foodName"],
"foodPrice" => $food["foodPrice"]
endforeach;
]

становится

$content = array();

// content creation
foreach (Food::foodsByCategory($cat["catId"], $db) as $food):
content["foodId"] => $food["foodId"],
content["foodName"] => $food["foodName"],
content["foodPrice"] => $food["foodPrice"]
endforeach;

// content insertion
$cat["catName"] = $content;

На самом деле, я считаю, что разделение создания и вставки яснее.

1

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector