0

我正在为 JS 图表处理 25 个数据点的数组。这是我想要完成的事情:

  • 上一个值减去下一个值,即$value[0] - $value[1]
  • 获取结果值并将其分配给另一个值数组
  • 取新数组中每个的绝对值并除以 24。

这将创建在另一个公式中使用的范围平均值,以确定图表的控制上限和下限。

这最初是在 Excel 中计算的,我需要将其移动到一个数组中以获取数据点的在线图表。

我通过使用 Codeigniter 的查询拉出我的数组。

$this->db->select('datapoint');
$this->db->from('my_table LIMIT 25');
$this->db->where('gauge=', '18');
$query = $this->db->get();

这提供了我的数组,我将其回显到图表 (HighCharts) 的一行 JavaScript 中。

data: [<?php foreach ($query->result() as $row) { echo $row->datapoint . ',';} ?>],

我尝试了在另一个 stackoverflow 问题上找到的 for 循环,类似于:

foreach ($query->result() as $row){
$value = $row->datapoint;
for ($i = 1, $n = count($value); $i < $n; $i++) {
    $value[] = $value[$i] - $value[$i-1];
}
}
echo "<pre>";
print_r($value);
echo "</pre>";

它只提供一个与我正在寻找的值不相近的值。

我只需要一个值,即该数组除以 24,然后我可以将该值添加到我的图表中。

任何帮助是极大的赞赏。

谢谢,

4

2 回答 2

0
$valueDiff = array();

foreach ($query->result() as $row){
    $value = $row->datapoint;
    for ($i = 0, $n = count($value) - 1; $i < $n; $i++) {

        //Subtract the next value from the previous value, i.e. $value[0] - $value[1]
        //Take that resulting value and assign it to another array of values
        //Take the absolute value of each in the new array and divide by 24.
        $valuesDiff[$i] = abs($value[$i] - $value[$i+1]) / 24;
    }
}

echo "<pre>";
print_r($valuesDiff);
echo "</pre>";
于 2013-11-06T15:51:06.007 回答
0

感谢@ElMarce 的帮助,但它需要更多的代码才能工作。我不得不添加第二个数组并更改了一些变量名。

此代码用于创建范围平均值,然后用于使用 HighCharts 和 Codeigniter 确定 SPC 图表的控制上限和下限。这是解决这个问题的正确方法吗?我不确定,但它确实可以满足我的需要。感谢大家的帮助。

$rangeArray = array();
$value = array();
$rangeAvg = 0;
foreach ($query->result() as $row) {
    $value[] = $row->pull_force;
for ($i = 0, $n = count($value) - 1; $i < $n; $i++) {
    $rangeArray[$i] = abs($value[$i] - $value[$i+1]);
    $rangeAvg = array_sum($rangeArray) / 24;
    }
}
于 2013-11-08T21:52:31.313 回答