在php数组中找到没有一些细节的值

时间:2017-05-30 11:13:04

标签: php

我有一个来自API的数组:

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)
          }
        }
      }
    }
  }
}

我可以使用以下方式获得英语初始评估水平:

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

但是我需要在循环中运行它,[4380258]和[1]会有所不同。如何在没有这些值的情况下获得关卡?

感谢。

2 个答案:

答案 0 :(得分: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'];
        }
    }
}

答案 1 :(得分:0)

您可以使用递归方法:

select l.*
from `left` l
where not exists (select 1
                  from `right` r
                  where r.col1 = l.col1 and
                        r.col2 = l.col2 and
                        . . .
                 );

这将生成以下数组:

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);