【问题标题】:Array loop to determine a range average用于确定范围平均值的数组循环
【发布时间】:2013-11-06 15:35:02
【问题描述】:

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

非常感谢任何帮助。

谢谢,

【问题讨论】:

  • $row-&gt;datapoint 的值是多少? - 你的循环看起来很奇怪。
  • 您能否向我们展示您的阵列的外观示例?另外,为什么要使用相同的变量来存储结果?这只会将值(如果有)推送到已经定义的 $values 数组。
  • @FritsvanCampen - $row-&gt;datapoint 的值是一个包含 25 个数据点的数组。类似于:31.80,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.26,3176.64,30.9,3176.64,30.9. ,22.86 @amalmurali - for 循环是我遇到问题的地方,所以我确定它是错误的。
  • 单行而不是 25 行是否可以获得预期的结果?如果没有,请提供您刚刚发布的数组的预期输出。
  • @YanBerk 否,因为我需要所有 25 行数据来确定范围平均值。这些数据点有助于确定施加到电线压接上的压力量的容差水平。

标签: javascript php arrays codeigniter highcharts


【解决方案1】:
$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>";

【讨论】:

  • 您的响应看起来就像我想要完成的,但我现在收到一个通知,它无法定义 $valuesDiff 变量。我们到了:)
  • 对不起,我的错:P。我编辑了答案。如果它不起作用,请让我更新
  • 目前只输出一个空白数组:Array ()有什么想法吗?
【解决方案2】:

感谢@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;
    }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-06-04
    • 2019-04-19
    • 2018-11-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-03-11
    相关资源
    最近更新 更多