【问题标题】:Subtract two arrays in PHP using Raspberry使用Raspberry在PHP中减去两个数组
【发布时间】:2016-03-02 10:16:49
【问题描述】:

我有两个数组,每个数组都包含一个从不同日期(24 小时间隔)中选择的 mysql。数组包含 1440 个条目以及另一个 sub-array(temp1, temp2, temp3 and date)。我试过foreach($array as $key=>$val),但我不能用另一个或从另一个减去$val,比如说$val2。最合法的方法是(基于网络搜索):

foreach($yesterdayValues as $key=>$val){
    if(substr($key, 0, 5) == 'temp2')
        $todayValues[$key] -= $val;  
}

但它不起作用。

主要思想是用昨天的相同temp2 值减去今天的temp2 值,以查看温度变化。并很好地展示它们。

【问题讨论】:

    标签: php arrays foreach substr subtraction


    【解决方案1】:

    编辑:类似的东西?

    $yesterdayValues['temp1'] = 18.145666122437;
    $yesterdayValues['temp2'] = 19.1425666122437;
    $yesterdayValues['temp3'] = 20.845666122437;
    
    $difference = array();
    $i = 2;
    foreach($yesterdayValues as $key=>$val){
        if(isset($yesterdayValues['temp'.$i])) {
            $difference[$key] = (float)($val - $yesterdayValues['temp'.$i]);
        }
        $i++;
    }
    
    
    var_dump($difference);
    

    显示 : array(2) { ["temp1"]=> float(-0.9969004898067) ["temp2"]=> float(-1.7030995101933) }

    【讨论】:

    • var_dump($yesterdayValues) 给出了这个: array(1440) { [0]=> array(4) { ["temp1"]=> float(18.145666122437) ["temp2"]=> float (14.875) ["temp3"]=> float(18.104000091553) ["date"]=> string(19) "2016-02-29 10:47:10" } [1]=> array(4) { [" temp1...等等
    • 不,有两个独立的数组,todayValues[] 和昨天的values[],结构相同但内容不同。今天的每个 temp2 减去昨天的每个 temp2 将是我们的结果。如果我在 foreach 循环中这样减去它就行不通了。我昨天试过了……
    【解决方案2】:

    答案是这样的(但目前它是静态的):

    for($i=0;$i<1440;$i++){
        (float)$yesterdayValues[$i]['temp2'] = (float)$last24hourValues[$i]['temp2'] - (float)$yesterdayValues[$i]['temp2'];
    }
    

    24 小时有 1440 个条目,可以通过简单的 for 手动访问密钥。也许这可以与 foreach 而不是简单的 for 一起使用。我稍后会检查。

    【讨论】:

      【解决方案3】:

      愿这对你有用

      $yesterdayValues = array(
          array('temp1'=>18.145666122437,'temp2'=>14.875, 'temp3'=>18.104000091553, 'date'=>'2016-02-29 10:47:10'),
          array('temp1'=>19.245666022437,'temp2'=>14.875, 'temp3'=>19.104000091553, 'date'=>'2016-02-29 11:47:10'),
          array('temp1'=>20.145666122437,'temp2'=>14.875, 'temp3'=>20.104000091553, 'date'=>'2016-02-29 12:47:10'),
      ) ;
      $todaysValues = array(
          array('temp1'=>18.145666122437,'temp2'=>12.875, 'temp3'=>18.104000091553, 'date'=>'2016-02-29 10:47:10'),
          array('temp1'=>19.145666122437,'temp2'=>14.075, 'temp3'=>19.104000091553, 'date'=>'2016-02-29 11:47:10'),
          array('temp1'=>20.145666122437,'temp2'=>17.175, 'temp3'=>20.104000091553, 'date'=>'2016-02-29 12:47:10'),
      ) ;
      $diffArr = array();
      foreach ($yesterdayValues AS $key => $dataArr) {
          $diffArr[$key] = (float)($dataArr['temp2'] - $todaysValues[$key]['temp2']);
      }
      

      【讨论】:

      • 不,这不起作用。我必须提醒您,这些是最常见的选择,并且代码在 Raspberry Pi 上运行。我想这与PHP版本有关。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多