как пролить oop через этот сложный многомерный массив и добавить только определенные поля в отдельные строки базы данных mysql - PullRequest
0 голосов
/ 04 августа 2020

Итак, мне довольно сложно иметь дело с массивом, на который я помещу ссылку ниже, но суть такова: я пытаюсь пропустить oop через этот массив и добавить определенные поля из каждого подмассива в строк в базе данных mysql.

Я использовал подготовленные операторы и пытаюсь добавить следующие поля в свою базу данных для каждого l oop.

  • уникальный ссылка, которую я сохранил в $ _SESSION ['userreference']
  • name
  • distance
  • moving_time
  • max_heartrate
  • start_date_local

Рассматриваемый массив:

    array(30) {
  [0]=>
  array(52) {
    ["resource_state"]=>
    int(2)
    ["athlete"]=>
    array(2) {
      ["id"]=>
      int(2224878)
      ["resource_state"]=>
      int(1)
    }
    ["name"]=>
    string(6) "Easy 5"
    ["distance"]=>
    float(5037.7)
    ["moving_time"]=>
    int(1493)
    ["elapsed_time"]=>
    int(1494)
    ["total_elevation_gain"]=>
    float(11.1)
    ["type"]=>
    string(3) "Run"
    ["workout_type"]=>
    int(0)
    ["id"]=>
    int(3862655039)
    ["external_id"]=>
    string(12) "activity.fit"
    ["upload_id"]=>
    int(4133211829)
    ["start_date"]=>
    string(20) "2020-08-04T11:43:46Z"
    ["start_date_local"]=>
    string(20) "2020-08-04T12:43:46Z"
    ["timezone"]=>
    string(25) "(GMT+00:00) Europe/London"
    ["utc_offset"]=>
    float(3600)
    ["start_latlng"]=>
    array(2) {
      [0]=>
      float(52.67)
      [1]=>
      float(0.94)
    }
    ["end_latlng"]=>
    array(2) {
      [0]=>
      float(52.67)
      [1]=>
      float(0.94)
    }
    ["location_city"]=>
    NULL
    ["location_state"]=>
    NULL
    ["location_country"]=>
    string(14) "United Kingdom"
    ["start_latitude"]=>
    float(52.67)
    ["start_longitude"]=>
    float(0.94)
    ["achievement_count"]=>
    int(0)
    ["kudos_count"]=>
    int(13)
    ["comment_count"]=>
    int(0)
    ["athlete_count"]=>
    int(1)
    ["photo_count"]=>
    int(0)
    ["map"]=>
    array(3) {
      ["id"]=>
      string(11) "a3862655039"
      ["summary_polyline"]=>
      string(392) "q|n`Ikew"
      ["resource_state"]=>
      int(2)
    }
    ["trainer"]=>
    bool(false)
    ["commute"]=>
    bool(false)
    ["manual"]=>
    bool(false)
    ["private"]=>
    bool(false)
    ["visibility"]=>
    string(8) "everyone"
    ["flagged"]=>
    bool(false)
    ["gear_id"]=>
    string(8) "g3671351"
    ["from_accepted_tag"]=>
    bool(false)
    ["upload_id_str"]=>
    string(10) "4133211829"
    ["average_speed"]=>
    float(3.374)
    ["max_speed"]=>
    float(6.6)
    ["average_cadence"]=>
    float(78)
    ["has_heartrate"]=>
    bool(true)
    ["average_heartrate"]=>
    float(166.3)
    ["max_heartrate"]=>
    float(178)
    ["heartrate_opt_out"]=>
    bool(false)
    ["display_hide_heartrate_option"]=>
    bool(true)
    ["elev_high"]=>
    float(53)
    ["elev_low"]=>
    float(46.2)
    ["pr_count"]=>
    int(0)
    ["total_photo_count"]=>
    int(0)
    ["has_kudoed"]=>
    bool(false)
    ["suffer_score"]=>
    float(44)
  }
  [1]=>
  array(50) {
    ["resource_state"]=>
    int(2)
    ["athlete"]=>
    array(2) {
      ["id"]=>
      int(2224878)
      ["resource_state"]=>
      int(1)
    }
    ["name"]=>
    string(12) "Morning Walk"
    ["distance"]=>
    float(10848.7)
    ["moving_time"]=>
    int(8095)
    ["elapsed_time"]=>
    int(9257)
    ["total_elevation_gain"]=>
    float(74.5)
    ["type"]=>
    string(4) "Walk"
    ["id"]=>
    int(3847387184)
    ["external_id"]=>
    string(40) "80B66E48-B4F8-414F-8974-F6F157A09E03.fit"
    ["upload_id"]=>
    int(4116320622)
    ["start_date"]=>
    string(20) "2020-08-01T08:32:14Z"
    ["start_date_local"]=>
    string(20) "2020-08-01T09:32:14Z"
    ["timezone"]=>
    string(25) "(GMT+00:00) Europe/London"
    ["utc_offset"]=>
    float(3600)
    ["start_latlng"]=>
    array(2) {
      [0]=>
      float(53.47)
      [1]=>
      float(-1.94)
    }
    ["end_latlng"]=>
    array(2) {
      [0]=>
      float(53.48)
      [1]=>
      float(-1.9)
    }
    ["location_city"]=>
    NULL
    ["location_state"]=>
    NULL
    ["location_country"]=>
    string(14) "United Kingdom"
    ["start_latitude"]=>
    float(53.47)
    ["start_longitude"]=>
    float(-1.94)
    ["achievement_count"]=>
    int(0)
    ["kudos_count"]=>
    int(22)
    ["comment_count"]=>
    int(0)
    ["athlete_count"]=>
    int(1)
    ["photo_count"]=>
    int(0)
    ["map"]=>
    array(3) {
      ["id"]=>
      string(11) "a3847387184"
      ["summary_polyline"]=>
      string(846) "{rjeIlpyJw}@sxFNDFEDUFeAEk@Uo@COBGFE`@AWyAc@eBAWFUIAOQuAaCu@w@]g@_BqBOMIc@@MFOMNG?GCc@i@}AwA{A}AwAkCEQ@SMLMa@?AD?BSLQ?GMPEb@EBGAMO[k@s@cBeBmDyBcHgB_H_@uBo@wCOoC@QFQE?GAOSYg@Oc@g@gCs@cDUy@g@uAm@kAOg@kAqB_@_Ak@gAGYg@kA[eBY_Ay@aBe@u@]c@i@mB[aAQa@]g@]}@IMIg@W_AQoA_@yC[qD_@sFAwC@uKPuBDwB^mHNeBJsBD}DEgEDm@CwAMsBEa@Qy@_@mAOcBMa@L^\dC`@fAKmAGgA[qCYcEQuAYeEYgBWiCQwAUqCi@eFYcDsAgL]mEA}AMkCB{@@yEEkA?iAIoB@_DMyIAwFBsBC{C@kAEoCa@sIk@eISuBUqDg@{FEeAOeA[sDMiAIwBQgAKaBEOICDWAUS}AIqA?YFJ@HDM?eAFe@d@y@Za@Ra@FEJB@BQA{@fAWd@Mb@MpAELDDZpCT`EX|BHpBNjBR`BVnDPrAj@fG`AdN\jJHrA?^I|@Aj@FjB?vFB~A?xBFrDA~CDxBD|DFdBCvCH|Ej@nHR`B\jCRzBTjBRzBZtCb@|EXlCJvAn@|Fv@vIb@pFTrGB`EG|EExAi@fI]|HE`BClIN`FXxEb@rEp@hEd@rBj@z@Vh@fAxDfA~A|@fBJ^l@nC`AhCrAzBp@xAbA`Cl@|BXvAb@vAVhANf@Zt@Nl@Fd@@lADn@^`BTtAh@fCjDhLjAjDp@bBnBjD|AbC|AnBfAhAl@v@xB~BxBhCrAvBf@dABRERg@f@M^MdAQdAItA@b@h@z@Ll@"
      ["resource_state"]=>
      int(2)
    }
    ["trainer"]=>
    bool(false)
    ["commute"]=>
    bool(false)
    ["manual"]=>
    bool(false)
    ["private"]=>
    bool(false)
    ["visibility"]=>
    string(8) "everyone"
    ["flagged"]=>
    bool(false)
    ["gear_id"]=>
    string(8) "g6163360"
    ["from_accepted_tag"]=>
    bool(false)
    ["upload_id_str"]=>
    string(10) "4116320622"
    ["average_speed"]=>
    float(1.34)
    ["max_speed"]=>
    float(2.7)
    ["has_heartrate"]=>
    bool(true)
    ["average_heartrate"]=>
    float(91.6)
    ["max_heartrate"]=>
    float(118)
    ["heartrate_opt_out"]=>
    bool(false)
    ["display_hide_heartrate_option"]=>
    bool(true)
    ["elev_high"]=>
    float(276.7)
    ["elev_low"]=>
    float(208.7)
    ["pr_count"]=>
    int(0)
    ["total_photo_count"]=>
    int(0)
    ["has_kudoed"]=>
    bool(false)
    ["suffer_score"]=>
    float(15)
  }

et c ....

Код, который у меня есть до сих пор, который, вероятно, неверен, поэтому открыты для любых предложений!

$response3 = curl_exec($curl3); // cURL request which gives me json

curl_close($curl3);

$runs = json_decode($response3, true); // turning that json into the array

// the for and foreach loop i'm trying to use and insert on each loop. The db is connected further up on this page. 
//Completely open that everything below this is wrong, i've been banging my head against a wall trying everything. open to any suggestions

$keys = array_keys($runs);
for($i = 0; $i < count($runs); $i++) {
    foreach($runs[$keys[$i]] as $key => $value) {
        
      $stmt = $conn->prepare("INSERT INTO runs (userReferenceRuns, runName, runDate, runDistance, runDuration) VALUES (?, ?, ?, ?, ?)");
      $stmt->bind_param("sssss", $_SESSION['userReference'], $names, $startdate, $distances, $movingtime);  
      $stmt->execute();
    }
}
...