Javascript 数组循环以确定范围平均值

Javascript 数组循环以确定范围平均值,javascript,php,arrays,codeigniter,highcharts,Javascript,Php,Arrays,Codeigniter,Highcharts,我正在使用JS图表的25个数据点数组。以下是我试图实现的目标: 从上一个值中减去下一个值,即$value[0]-$value[1] 获取结果值并将其分配给另一个值数组 取新数组中每个数组的绝对值除以24 这将创建在另一个公式中使用的范围平均值,以确定图表的控制上限和下限 这最初是在Excel中计算的,我需要将其移动到一个数组中,用于在线数据点图表 我使用Codeigniter通过查询提取数组 $this->db->select('datapoint'); $this->db

我正在使用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行中

数据:[],
我尝试了另一个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>";
foreach($query->result()作为$row){
$value=$row->datapoint;
对于($i=1,$n=count($value);$i<$n;$i++){
$value[]=$value[$i]-$value[$i-1];
}
}
回声“;
打印(价值);
回声“;
它只提供了一个与我所寻找的不接近的价值

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

非常感谢您的帮助

谢谢,

$valueDiff=array();
$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;
    }
}
foreach($query->result()作为$row){ $value=$row->datapoint; 对于($i=0,$n=count($value)-1;$i<$n;$i++){ //从上一个值中减去下一个值,即$value[0]-$value[1] //获取结果值并将其分配给另一个值数组 //取新数组中每个数组的绝对值除以24。 $valuesDiff[$i]=abs($value[$i]-$value[$i+1])/24; } } 回声“; 打印费用($valuesDiff); 回声“;
谢谢@ElMarce的帮助,但它需要更多的代码才能工作。我不得不添加第二个数组,并更改了一些变量名

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

$rangeArray=array();
$value=array();
$rangeAvg=0;
foreach($query->result()作为$row){
$value[]=$row->拉力;
对于($i=0,$n=count($value)-1;$i<$n;$i++){
$rangeArray[$i]=abs($value[$i]-$value[$i+1]);
$rangeAvg=数组\总和($rangeArray)/24;
}
}

数据点的值是多少你的循环看起来很奇怪。你能给我们展示一下你的数组的样子吗?另外,为什么要使用相同的变量来存储结果?这只会将值(如果有)推送到已定义的
$values
数组。@FritsvanCampen-
$row->datapoint
的值是25个数据点的数组。类似于:31.80,31.80,40.12,34.50,23.88,20.08,37.74,30.76,24.32,14.74,28.70,20.44,35.04,29.54,50.22,25.32,29.74,36.34,26.64,31.68,27.78,37.92,31.70,22.86@amalmurali-for循环是我遇到问题的地方,因此我确信它是错误的。在一行而不是在25行上工作会得到预期的结果吗?如果不是,请提供您刚刚发布的数组的预期输出。@YanBerk否,因为我需要所有25行数据来确定范围平均值。这些数据点有助于确定应用于电线压接的压力量的公差水平。您的响应看起来就像我试图实现的,但我现在注意到它无法定义$valuesDiff变量。我们快到了:)对不起,我的错:P。我编辑了答案。如果不起作用,请随时通知我当前只输出一个空白数组:
array()
有什么想法吗?
$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>";
$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;
    }
}