Php 循环通过JSON对象,另一个数组中的数组
我有一个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"]=>
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']。