2017-05-30 110 views
1

我有一個從API此陣:發現價值沒有一些細節

$english = $json['data']['INST4841_NNN59']['English'][4380258][1]['level']; 

不過,我需要運行它:

array(2) { 
    ["messages"]=> 
    array(1) { 
    [0]=> 
    string(7) "Success" 
    } 
    ["data"]=> 
    array(1) { 
    ["INST4841_NNN59"]=> 
    array(3) { 
     ["English"]=> 
     array(1) { 
     [4380258]=> 
     array(3) { 
      [0]=> 
      array(12) { 
      ["idinstance"]=> 
      string(8) "11059013" 
      ["idassessment"]=> 
      string(2) "53" 
      ["assessmenttitle"]=> 
      string(17) "English Screening" 
      ["idlevel"]=> 
      string(1) "6" 
      ["level"]=> 
      string(7) "Level 2" 
      ["start"]=> 
      string(19) "10:27:21 30-05-2017" 
      ["finish"]=> 
      string(19) "10:33:10 30-05-2017" 
      ["timetaken"]=> 
      string(3) "335" 
      ["idsubject"]=> 
      string(2) "10" 
      ["subjecttitle"]=> 
      string(7) "English" 
      ["possible"]=> 
      int(15) 
      ["actual"]=> 
      int(15) 
      } 
      [1]=> 
      array(12) { 
      ["idinstance"]=> 
      string(8) "11059105" 
      ["idassessment"]=> 
      string(2) "49" 
      ["assessmenttitle"]=> 
      string(26) "English Initial Assessment" 
      ["idlevel"]=> 
      string(1) "4" 
      ["level"]=> 
      string(13) "Entry Level 3" 
      ["start"]=> 
      string(19) "10:33:13 30-05-2017" 
      ["finish"]=> 
      string(19) "10:35:03 30-05-2017" 
      ["timetaken"]=> 
      string(3) "421" 
      ["idsubject"]=> 
      string(2) "10" 
      ["subjecttitle"]=> 
      string(7) "English" 
      ["possible"]=> 
      int(22) 
      ["actual"]=> 
      float(8.2) 
      } 
      [2]=> 
      array(12) { 
      ["idinstance"]=> 
      string(8) "11059147" 
      ["idassessment"]=> 
      string(2) "57" 
      ["assessmenttitle"]=> 
      string(18) "English Diagnostic" 
      ["idlevel"]=> 
      string(1) "3" 
      ["level"]=> 
      string(13) "Entry Level 2" 
      ["start"]=> 
      string(19) "10:35:09 30-05-2017" 
      ["finish"]=> 
      string(19) "10:35:44 30-05-2017" 
      ["timetaken"]=> 
      string(2) "20" 
      ["idsubject"]=> 
      string(2) "10" 
      ["subjecttitle"]=> 
      string(7) "English" 
      ["possible"]=> 
      int(67) 
      ["actual"]=> 
      int(5) 
      } 
     } 
     } 
     ["ICT"]=> 
     array(1) { 
     [4380260]=> 
     array(2) { 
      [0]=> 
      array(12) { 
      ["idinstance"]=> 
      string(8) "11059399" 
      ["idassessment"]=> 
      string(4) "1185" 
      ["assessmenttitle"]=> 
      string(22) "ICT Initial Assessment" 
      ["idlevel"]=> 
      string(1) "5" 
      ["level"]=> 
      string(7) "Level 1" 
      ["start"]=> 
      string(19) "10:52:05 30-05-2017" 
      ["finish"]=> 
      string(19) "10:58:04 30-05-2017" 
      ["timetaken"]=> 
      string(3) "339" 
      ["idsubject"]=> 
      string(2) "12" 
      ["subjecttitle"]=> 
      string(3) "ICT" 
      ["possible"]=> 
      int(79) 
      ["actual"]=> 
      float(66.7) 
      } 
      [1]=> 
      array(12) { 
      ["idinstance"]=> 
      string(8) "11059509" 
      ["idassessment"]=> 
      string(4) "1189" 
      ["assessmenttitle"]=> 
      string(14) "ICT Diagnostic" 
      ["idlevel"]=> 
      string(1) "6" 
      ["level"]=> 
      string(7) "Level 2" 
      ["start"]=> 
      string(19) "10:58:07 30-05-2017" 
      ["finish"]=> 
      string(19) "10:58:29 30-05-2017" 
      ["timetaken"]=> 
      string(2) "14" 
      ["idsubject"]=> 
      string(2) "12" 
      ["subjecttitle"]=> 
      string(3) "ICT" 
      ["possible"]=> 
      int(19) 
      ["actual"]=> 
      int(1) 
      } 
     } 
     } 
     ["Maths"]=> 
     array(1) { 
     [4380259]=> 
     array(3) { 
      [0]=> 
      array(11) { 
      ["idinstance"]=> 
      string(8) "11059522" 
      ["idassessment"]=> 
      string(2) "52" 
      ["assessmenttitle"]=> 
      string(15) "Maths Screening" 
      ["idlevel"]=> 
      string(1) "2" 
      ["level"]=> 
      string(13) "Entry Level 1" 
      ["start"]=> 
      string(19) "10:58:45 30-05-2017" 
      ["finish"]=> 
      string(19) "10:58:50 30-05-2017" 
      ["idsubject"]=> 
      string(2) "11" 
      ["subjecttitle"]=> 
      string(5) "Maths" 
      ["possible"]=> 
      int(4) 
      ["actual"]=> 
      int(0) 
      } 
      [1]=> 
      array(12) { 
      ["idinstance"]=> 
      string(8) "11059523" 
      ["idassessment"]=> 
      string(2) "48" 
      ["assessmenttitle"]=> 
      string(24) "Maths Initial Assessment" 
      ["idlevel"]=> 
      string(1) "1" 
      ["level"]=> 
      string(9) "Pre Entry" 
      ["start"]=> 
      string(19) "10:58:52 30-05-2017" 
      ["finish"]=> 
      string(19) "10:59:06 30-05-2017" 
      ["timetaken"]=> 
      string(1) "6" 
      ["idsubject"]=> 
      string(2) "11" 
      ["subjecttitle"]=> 
      string(5) "Maths" 
      ["possible"]=> 
      int(0) 
      ["actual"]=> 
      int(0) 
      } 
      [2]=> 
      array(12) { 
      ["idinstance"]=> 
      string(8) "11059530" 
      ["idassessment"]=> 
      string(2) "54" 
      ["assessmenttitle"]=> 
      string(16) "Maths Diagnostic" 
      ["idlevel"]=> 
      string(1) "2" 
      ["level"]=> 
      string(13) "Entry Level 1" 
      ["start"]=> 
      string(19) "10:59:08 30-05-2017" 
      ["finish"]=> 
      string(19) "11:01:12 30-05-2017" 
      ["timetaken"]=> 
      string(2) "92" 
      ["idsubject"]=> 
      string(2) "11" 
      ["subjecttitle"]=> 
      string(5) "Maths" 
      ["possible"]=> 
      int(63) 
      ["actual"]=> 
      float(15.2) 
      } 
     } 
     } 
    } 
    } 
} 

我可以用得到的英語初步評估水平在一個循環中[4380258]和[1]有所不同。我怎樣才能得到沒有這些值的水平?

謝謝。

+0

結帳這個答案https://開頭計算器。 COM /問題/ 14006609/PHP遞歸式打印的所有元素 - -A-多維數組與 - 鍵#答案 - 14006639。你只需要編輯它:-) – Redrif

回答

0

試試這個:

foreach ($json['data']['INST4841_NNN59']['English'] as $key => $value){ 
    foreach ($value as $k => $v) { 
     if (isset($v['assessmenttitle']) 
      && 
      $v['assessmenttitle'] == 'English Initial Assessment' 
      && 
      isset($v['level']) 
     ) { 
      echo $v['level']; 
     } 
    } 
} 
+0

爲什麼downvote?這工作。 – lloiacono

+0

謝謝,我沒有downvote。這將輸出所有三個級別,即「Level 2Entry Level 3Entry Level 2」API可以返回其中的一個,兩個或三個。我需要具體的英語初評嗎? – HH83

+0

@ HH83我再次更新了答案檢查,請 – lloiacono

0

你可以使用遞歸方法:

function loop_array($array = [], $return = []) { 
    foreach ($array as $key => $value) { 
     if (is_array($value)) { 
      $return = loop_array($array[$key], $return); 
     } 
     elseif ($key === 'level') { 
       $return[] = $value; 
      } 
     } 
    } 

    return $return; 
} 

$information = [ 
    'subinformation' => [ 
     'another_level' => [ 
      'level' => 'new level' 
     ] 
    ], 
    'level' => 1, 
    'another_sublevel_thing' => [ 
     'new_sublevel' => [ 
      'level' => 'first' 
     ] 
    ] 
]; 

$levels = loop_array($information); 

,這將產生以下數組:

array(3) { 
    [0]=> 
    string(9) "new level" 
    [1]=> 
    int(1) 
    [2]=> 
    string(5) "first" 
}