Создание массива внутри массива с помощью foreach - PullRequest
0 голосов
/ 04 декабря 2018

Я просто хочу создать массив внутри массива.После создания этого подмассива я хочу заполнить его 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), ожидающий ']'

1 Ответ

0 голосов
/ 04 декабря 2018

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;

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

...