用于确定范围平均值的数组循环

时间:2013-11-06 15:35:03

标签: javascript php arrays codeigniter highcharts

我正在处理JS Chart的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();

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

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然后我可以将该值添加到我的图表中。

非常感谢任何帮助。

谢谢,

2 个答案:

答案 0 :(得分: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>";

答案 1 :(得分:0)

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

此代码用于创建Range Average,然后使用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;
    }
}