使用 foreach 在数组中创建数组
Creating array inside array with 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);
}
syntax error, unexpected 'foreach' (T_FOREACH), expecting ']'
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;
其实我也觉得解耦创建和插入更清晰
我只想在数组中创建数组。创建这个子数组后,我想用 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);
}
syntax error, unexpected 'foreach' (T_FOREACH), expecting ']'
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;
其实我也觉得解耦创建和插入更清晰