У меня есть два массива, каждый из которых содержит один MySQL выбрать из разных дней (24-часовой интервал). Массивы содержат 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);
show: array (2) {[«temp1»] => float (-0.9969004898067) [«temp2»] => float (-1.7030995101933)}
Ответ таков (но на данный момент это немного статично):
for($i=0;$i<1440;$i++){
(float)$yesterdayValues[$i]['temp2'] = (float)$last24hourValues[$i]['temp2'] - (float)$yesterdayValues[$i]['temp2'];
}
В течение 24 часов существует 1440 записей, и ключ можно получить вручную в простой форме. Может быть, это может работать с foreach, а не просто для. Я проверю позже.
может это сработает для вас
$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']);
}