用于循环的php数组管理显示堆积的条形图
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了用于循环的php数组管理显示堆积的条形图相关的知识,希望对你有一定的参考价值。
我正在尝试使用此表中的数据创建堆积条形图:
我需要得到这样的结果来制作图表:
['oxygen','cpap']
Prospecting [10,12]
Qualification [15,8]
包含每个产品数量的每个销售阶段的所有产品和数组的列表。
我可以从表格中获取产品名称列表,如下所示:
$sql = "SELECT * FROM target_products";
$result = $conn->query($sql);
if ($result->num_rows > 0) {
// output data of each row
while($row = $result->fetch_assoc()) {
$product_name[] = $row['product_name'];
}
}
但我不知道如何以我需要的格式重新组织它。我该怎么做?
答案
而不是仅使用以下方法将行提取到数组中:
while($row = $result->fetch_assoc()) {
$product_name[] = $row['product_name'];
}
获得所需结构的一般想法是:
while($row = $result->fetch_assoc()) {
$graph_data[$row['sales_stage']][$row['product_name']] = $row['qty'];
// rows columns values
}
这将创建一个结构,其中每一行都是sales_stage
,每列都是属于该阶段的product_name
。
但这通常不是那么简单。某些阶段可能包含其他阶段没有的产品,因此您可能需要跟踪所有产品并将缺失值设置为零以用于图形数据。
因此,请保留所有产品的清单
$all_products = [];
while($row = $result->fetch_assoc()) {
$all_products[$row['product_name']] = 0;
$graph_data[$row['sales_stage']][$row['product_name']] = $row['qty'];
}
然后,在获得所有数据后,可以将每一行与完整的产品列表合并,以便每个sales_stage
的值与产品标题匹配。
foreach ($graph_data as $sales_stage => $stage_products) {
$graph_data[$sales_stage] = array_values(array_merge($all_products, $stage_products));
}
然后你可以得到你需要的结果:
echo json_encode([
array_keys($all_products),
$graph_data
]);
这可能不是您正在使用的任何图形库所需的,但它应该让您走上正确的轨道。
以上是关于用于循环的php数组管理显示堆积的条形图的主要内容,如果未能解决你的问题,请参考以下文章