php - 按索引分组的多维数组
问题描述
我希望有人能够指导我如何最好地完成一项任务。我有一个多维数组。我需要对具有相同索引名称的数组的值进行分组和求和。这就是我所拥有的。
Array
(
[Garlic Potatoes] => 625
[Rice] => 1025
[Chicken Shawarma] => 1675
[Pita Bread Sm] => 6
[Pita Bread Large] => 14
[Beef Shawarma] => 1755
[Can of Pop] => 2
[Brioch Bun] => 2
[Chicekn Shawarama] => 135
)
我怎样才能得到一个鸡肉沙瓦玛和 qty = 1405 的实例?我需要使用foreach吗?
$sql = "SELECT menu_id, SUM(quantity) AS qty FROM daily_consumption_details WHERE consumption_id = $id GROUP BY menu_id";
$res = $conn->query($sql);
$ingredients = [];
while($menu = $res->fetch_object())
{
$sql_ing = "SELECT item_name, quantity FROM menu_details WHERE menu_id = $menu->menu_id ";
$rs = $conn->query($sql_ing);
while($items = $rs->fetch_object())
{
$qty = $menu->qty * $items->quantity;
if ( array_key_exists(trim($items->item_name), $ingredients) )
$ingredients[trim($items->item_name)] = $qty + $ingredients[trim($items->item_name)];
else
$ingredients[trim($items->item_name)] = $qty;
}
}
感谢您的反馈
解决方案
如果您item_name
将新成分数组的键设为键,则可以轻松检查您是否已经为该成分创建了条目
while($menu = $res->fetch_object())
{
$sql_ing = "SELECT item_name, quantity FROM menu_details WHERE menu_id = $menu->menu_id ";
$rs = $conn->query($sql_ing);
while($items = $rs->fetch_object())
{
$qty = $menu->qty * $items->quantity;
$item = trim($items->item_name);
if ( array_key_exists($item, $ingredients) ) {
$ingredients[$items] += $qty;
} else {
$ingredients[$items] = $qty;
}
}
}
结果$ingredients
数组看起来差不多,除了键是项目名称而不是数字、0、1、2等
推荐阅读
- python - 在美丽的汤中搜索文本时如何获取href和
- python - 使用随机音乐文件播放器无法打开文件
- javascript - Spotify 播放端点无法识别 uri
- java - Java KeyManagementServiceClient 创建在 Jruby 中挂起
- python - 将列表作为索引传递以在 n 维嵌套列表中分配值
- r - 使用 R 的 aws.s3 包从 AWS S3 存储桶中读取 geotif
- r - facet_wrap() 中的行而不是框
- redux - 如何让 combineReducers 与 flowtype 一起工作?
- email - Centos 网页面板:SMTP
- vb.net - 使用 VB.NET 将 GET 提交到 REST API 的授权错误 401。在 Access VBA 中工作正常