Php 循环通过JSON对象,另一个数组中的数组

Php 循环通过JSON对象,另一个数组中的数组,php,arrays,json,multidimensional-array,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"]=>

我有一个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级 所以,或者从$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");}
    }
}

我会这样循环您的阵列:

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

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

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

如果您只是在foreach循环检查中,它是否有效 如果($value2->Subject==“算法”)
谢谢,这正是我需要的。我有一个名词数组(例如“algorithm”),我想找到其中一个名词的记录。谢谢你的回答,我使用了like$data['records']。