我从JSON格式的API获取数据。它获得了用户的静息心率并将其插入我的数据库。它获取今天的日期以及过去的几天,并相应地更新数据库。下面的代码确实有效(尽管由于某种原因它插入一个空行)。我的问题是,有没有更好/更有效的方法来编写这段代码?
这是数组:
[activities-heart] => Array (
[0] => Array (
[dateTime] => 2018-03-22
[value] => Array (
[customHeartRateZones] => Array ( )
[heartRateZones] => Array (
[0] => Array (
[caloriesOut] => 1135.7736
[max] => 85
[min] => 30
[minutes] => 814
[name] => Out of Range
)
[1] => Array (
[caloriesOut] => 1260.7179
[max] => 119
[min] => 85
[minutes] => 289
[name] => Fat Burn
)
[2] => Array (
[caloriesOut] => 690.64515
[max] => 145
[min] => 119
[minutes] => 90
[name] => Cardio
)
[3] => Array (
[caloriesOut] => 0
[max] => 220
[min] => 145
[minutes] => 0
[name] => Peak
)
)
[restingHeartRate] => 65
)
)
[1] => Array (
[dateTime] => 2018-03-23
[value] => Array (
[customHeartRateZones] => Array ( )
[heartRateZones] => Array (
[0] => Array (
[caloriesOut] => 1512.00346
[max] => 85
[min] => 30
[minutes] => 1113
[name] => Out of Range
)
[1] => Array (
[caloriesOut] => 1315.59604
[max] => 119
[min] => 85
[minutes] => 280
[name] => Fat Burn
)
[2] => Array (
[caloriesOut] => 98.14618
[max] => 145
[min] => 119
[minutes] => 13
[name] => Cardio
)
[3] => Array (
[caloriesOut] => 0
[max] => 220
[min] => 145
[minutes] => 0
[name] => Peak
)
)
[restingHeartRate] => 64
)
)
)
以下是处理它的相关代码:
<?php
$obj = new RecursiveIteratorIterator( new RecursiveArrayIterator( json_decode( $return, TRUE ) ), RecursiveIteratorIterator::SELF_FIRST );
foreach ( $obj as $key => $val ) {
$$key = $val;
$stmt = $connection->prepare( "INSERT INTO heartrate SET `encodedid` = ?, activitydate = ?, rhr = ? ON DUPLICATE KEY UPDATE rhr= ?" );
$stmt->bind_param( 'ssii', $studentencodedid, $dateTime, $restingHeartRate, $restingHeartRate );
$stmt->execute();
if ( $stmt->affected_rows < 1 ) {
header( "Location: " . $url . "/index.php?errormessage=Failed to updated the resting heart rate value." );
exit;
}
$stmt->close();
}
感谢您的反馈。
添