【问题标题】:Creating array inside array with foreach使用foreach在数组内创建数组
【发布时间】:2018-12-04 14:27:04
【问题描述】:

我只想在数组中创建数组。创建这个子数组后,我想用 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),期待 ']'

【问题讨论】:

  • 将你的foreach移到外面创建他自己的数组,然后将数组插入$cat["catName"]
  • 哈哈哈哈哈哈这太容易了。 :D 谢谢兄弟。
  • 您应该将此作为答案发布,以便我标记。

标签: php arrays multidimensional-array foreach dynamic-arrays


【解决方案1】:

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;

实际上,我发现解耦创建和插入也更清晰。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-06
    • 1970-01-01
    • 1970-01-01
    • 2012-11-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多