遍历JSON对象,另一个数组中的一个数组

时间:2019-01-25 12:40:00

标签: php arrays json multidimensional-array

我有一个像这样的JSON对象:

array(1) {
  ["records"]=>
  array(2) {
    [0]=>
    array(6) {
      ["ID"]=>
      string(1) "1"
      ["Subject"]=>
      string(9) "algorithm"
      ["Object"]=>
      string(7) "program"
      ["Predicate"]=>
      string(3) "isa"
      ["Count"]=>
      string(1) "1"
      ["Source"]=>
      string(14) "Basic instinct"
    }
    [1]=>
    array(6) {
      ["ID"]=>
      string(1) "2"
      ["Subject"]=>
      string(18) "Amazing Pillow 2.0"
      ["Object"]=>
      string(3) "199"
      ["Predicate"]=>
      string(40) "The best pillow for amazing programmers."
      ["Count"]=>
      string(2) "-1"
      ["Source"]=>
      string(2) "in"
    }
  }
}

如果Subject具有单词“ algorithm”,我想将每个数组的Subject值推到一个新数组。我正在写这样的php代码:

foreach($data as $row => $value) {
    foreach($value as $row2 => $value2){
        if(in_array("algorithm", $value2->Subject)) {
            array_push($result, $value2);
        }
    else { array_push($result, "no record");}
    }
}

但是,它看起来是空的,我不知道为什么。如果有人可以帮忙,我会很高兴。谢谢。

3 个答案:

答案 0 :(得分:1)

您的数组为3级 因此,或者您开始​​使用$ data ['records']或使用3级foreach

foreach($data['records'] as $row => $value) {
    foreach($value as $row2 => $value2){
        if(in_array("algorithm", $value2->Subject)) {
            array_push($result, $value2);
        }
    else { array_push($result, "no record");}
    }
}

答案 1 :(得分:0)

我会这样循环数组:

foreach($data['records'] as $record) {
  if($record["Subject"] == "algorithm")
    array_push($result, $record);
  else
    array_push($result, "no record");
}

让我知道这是否是您想要实现的目标。

答案 2 :(得分:0)

$ value2->主题不是数组而是字符串。因此in_array()不匹配。

如果您只是在foreach循环检查内,它是否有效? 如果($ value2-> Subject ===“ algorithm”) ?