我遇到了这个特殊代码的问题。条件是:
当$rows['Machine#']
不在数组中时,请推入$machineArr
数组并取消设置$totalTimeArr
数组。
当$rows['Machine#']
位于数组中时,请将$rows['TotalTime']
推送到$totalTimeArr
数组中以进行添加。
$graphArr[]
(array_sum($totalTimeArr)
}。
每台机器只有一个$graphArr[]
我现在对第三个条件有疑问。它不首先计算,而是推送第一个数据输入。我尝试使用do while
循环,将$graphArr[] = '["'.$rows['Machine#'].'",'.array_sum($totalTimeArr).']';
置于if else
循环之外,但这似乎是我能够达到的最接近的循环。其他代码似乎没有任何问题,并且运作良好。感谢您的建议/建议/协助。以下是代码。
while ($rows = mysqli_fetch_array($conn))
{
if(!(in_array($rows['Machine#'], $machineArr)))
{
unset($totalTimeArr);
$machineArr[] = $rows['Machine#'];
$totalTimeArr[] = $rows['TotalTime'];
$graphArr[] = '["'.$rows['Machine#'].'",'.array_sum($totalTimeArr).']';
}
else if(in_array($rows['Machine#'], $machineArr))
{
$totalTimeArr[] = $rows['TotalTime'];
}
}
编辑:我目前正在谈论这个问题:
while ($rows = mysqli_fetch_array($conn))
{
$exists = false;
if( in_array($rows['Machine#'], $machineArr) )
{
$exists = true;
}
$totalTimeArr[] = $rows['TotalTime'];
if($exists === false)
{
$totalTimeArr = array();
$machineArr[] = $rows['Machine#'];
$totalTimeArr[] = $rows['TotalTime'];
}
$graphArr[] = '["'.current($machineArr).'",'.array_sum($totalTimeArr).']';
next($machineArr);
}
结果:
Array ( [0] => ["09CS1", 1.4]
[1] => ["08CS1", 1 ]
[2] => ["06CS1", 1 ]
[3] => ["" , 1.5]
[4] => ["02CS2", 1 ]
[5] => ["01CS2", 20 ]
[6] => ["" , 40 ]
[7] => ["01CS1", 1 ]
)
如何删除["", 1.5]
和["", 40]
?
以下是数据库:
答案 0 :(得分:0)
稍微修改了您的代码版本
$machineArr = Array();
while ($rows = mysqli_fetch_array($conn)) {
$exists = false;
if( in_array($rows['Machine#'], $machineArr) ) { $exists = true; }
$totalTimeArr[] = $rows['TotalTime'];
if($exists === false) {
unset($totalTimeArr);
$machineArr[] = $rows['Machine#'];
$totalTimeArr[] = $rows['TotalTime'];
$graphArr[] = '["'.$rows['Machine#'].'",'.array_sum($totalTimeArr).']';
}
}
将检查转换为一个in_array()
搜索,然后使用===
按位运算符进行比较以评估条件。同时将$machineArr
定义为Array()
作为循环中的第一次检查,因为$machineArr
(因为我没有看到while循环之前的代码),所以总是会失败未定义。
答案 1 :(得分:0)
我不确定你需要做什么,如果你需要一个特定类型的机器的运行总和,那么做一些类似的事情:
$totalTileArr = [];
while ($rows = mysqli_fetch_array($conn)) {
if (!isset($totalTileArr[$rows['Machine#']])) {
$totalTileArr[$rows['Machine#']] = [];
}
$totalTimeArr[$rows['Machine#']][] = $rows['TotalTime'];
$graphArr[$rows['Machine#']] = '["' . $rows['Machine#'] . '",' . array_sum($totalTimeArr[$rows['Machine#']]) . ']';
}