Dav*_*rne 0 php mysql arrays indexing
我正在尝试将自己的数据(当前仅显示在各种表和KPI指标块中)格式化为图形框架所需的格式。本质上,我希望我的一些值成为图形生成脚本的X和Y数据。
这是期望的结果(一个数组的示例,该数组可以从中生成图形/图形点):
$dataPoints = array(
array("x"=> 1, "y"=> 41, label=> "18/07/19"),
array("x"=> 2, "y"=> 35, label=> "19/07/19"),
array("x"=> 3, "y"=> 50, label=> "20/07/19"),
array("x"=> 4, "y"=> 45, label=> "21/07/19"),
array("x"=> 5, "y"=> 52, label=> "22/07/19"),
array("x"=> 6, "y"=> 68, label=> "23/07/19")
);
Run Code Online (Sandbox Code Playgroud)
我有以下代码可提取所需的相关信息:
//Build Graph Data Points
//
$daysmax=31;
$daycounter=0;
while($daysmax > $daycounter) {
$sql_get_day_total_events="SELECT COUNT(*),date_sub(curdate(),INTERVAL $daycounter day) as date1 FROM tblticketlog
WHERE DATE(date) = date_sub(curdate(),INTERVAL $daycounter day)
AND ((action = 'New Support Ticket Opened')
OR (action LIKE 'Status changed to Pending%')
OR (action LIKE 'Status changed to In Progress%')
OR (action LIKE 'New Ticket Response made by%'))";
$get_day_total_events_result=mysqli_query($db,$sql_get_day_total_events);
if(mysqli_num_rows($get_day_total_events_result) > 0) {
while($row = $get_day_total_events_result->fetch_assoc()) {
$day_result_date=strtotime($row['date1']);
$day_result_value=$row['COUNT(*)'];
}
}
$sql_get_day_escs="SELECT COUNT(*) FROM escalations
WHERE DATE(esc_at) = date_sub(curdate(), INTERVAL $daycounter day)
AND escalated = 1";
$get_day_escs_result=mysqli_query($db2,$sql_get_day_escs);
if(mysqli_num_rows($get_day_escs_result) > 0) {
while($row = $get_day_escs_result->fetch_assoc()) {
$day_escs_value=$row['COUNT(*)'];
}
}
$day_slas_met = $day_result_value - $day_escs_value;
$day_kpi_pcnt = round((($day_slas_met / $day_result_value) * 100),0);
$daycounter=$daycounter + 1;
}
Run Code Online (Sandbox Code Playgroud)
总而言之,我从$ db中提取了30天(滚动)中每天的事件总数,从$ db2中提取了30天(滚动)中每天的“升级事件”数量。我也从$ db查询中获取日期。
对于我的图:
X = $ daycounter(只是数据点的增量数字ID,从0开始到30为止)
Y = KPI百分比,这是使用$ day_kpi_pcnt中的简单数学计算得出的
LABEL =纯文本格式的日期宾语
我尝试执行的操作
是在循环之前初始化$ datapoints数组:
$datapoints = array();
Run Code Online (Sandbox Code Playgroud)
然后,在循环底部的$ daycounter + 1行之前,我尝试将值推送到数组的索引中:
$datapoints[x] = $daycounter;
$datapoints[label] = date("d-m-Y",$day_result_date);
$datapoints[y] = $day_kpi_pcnt;
Run Code Online (Sandbox Code Playgroud)
但是,这最终只是一个空图。如果我var_dump数组,我似乎在否则为空的数组中得到结果的最后一行:
**Day: 30 -- 29-06-2019 - 6/6 - 100%**
array(3) { ["x"]=> int(30) ["label"]=> string(10) "29-06-2019" ["y"]=> float(100) }
Run Code Online (Sandbox Code Playgroud)
老实说,PHP数组以及如何使用它们可能是我最薄弱的话题。我真的很努力地与他们抗争,并希望得到一些有关我犯错地方的指导甚至一些基本技巧。谢谢。
您可能会执行以下操作:
$datapoints = [];
while (...) {
...
$datapoints[x] = $daycounter;
$datapoints[label] = date("d-m-Y",$day_result_date);
$datapoints[y] = $day_kpi_pcnt;
...
}
Run Code Online (Sandbox Code Playgroud)
您将$datapoints在每次循环迭代中使用新的行值覆盖数组。因此,仅保留来自最后一行的值。相反,您需要将行添加到数组中:
$datapoints = [];
while (...) {
...
$datapoints[] = [
'x' => $daycounter,
'label' => date("d-m-Y",$day_result_date),
'y' => $day_kpi_pcnt,
];
...
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
71 次 |
| 最近记录: |