使用 Raspberry 减去 PHP 中的两个数组
Subtract two arrays in PHP using Raspberry
我有两个数组,每个数组包含一个来自不同日期(24 小时间隔)的 mysql select。数组包含 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
值,以查看温度变化。并很好地展示它们。
编辑:类似的东西?
$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);
显示:数组(2){ ["temp1"]=> 浮动(-0.9969004898067)["temp2"]=> 浮动(-1.7030995101933)}
答案是这样的(但目前是静态的):
for($i=0;$i<1440;$i++){
(float)$yesterdayValues[$i]['temp2'] = (float)$last24hourValues[$i]['temp2'] - (float)$yesterdayValues[$i]['temp2'];
}
24小时内有1440个条目,可以通过简单的for手动获取密钥。也许这可以与 foreach 一起使用而不是简单的 for。稍后我会查看。
希望这对你有用
$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']);
}
我有两个数组,每个数组包含一个来自不同日期(24 小时间隔)的 mysql select。数组包含 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
值,以查看温度变化。并很好地展示它们。
编辑:类似的东西?
$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);
显示:数组(2){ ["temp1"]=> 浮动(-0.9969004898067)["temp2"]=> 浮动(-1.7030995101933)}
答案是这样的(但目前是静态的):
for($i=0;$i<1440;$i++){
(float)$yesterdayValues[$i]['temp2'] = (float)$last24hourValues[$i]['temp2'] - (float)$yesterdayValues[$i]['temp2'];
}
24小时内有1440个条目,可以通过简单的for手动获取密钥。也许这可以与 foreach 一起使用而不是简单的 for。稍后我会查看。
希望这对你有用
$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']);
}