2015-02-07 79 views
0

我似乎无法正确的语法找出打印:返回多个对象和数组内的数组

[Agriculture] => AGR 
[Animals] => AN 
[Arts and Humanities] => ART 

的$ TOPIC对象内。

是什么让这有点更令人困惑的是$ TOPIC是在一个对象,可以以不同的顺序调用这个例子。因此,而不是[3] => stdClass对象,它可能是[4] => stdClass对象,(或任何数字)。

一些示例foreach语法包含在下面;它不起作用。

stdClass Object 
(
    [123456] => stdClass Object 
     (
      [required_actions] => Array 
       (
        [1] => stdClass Object 
         (
          [maxlength] => 
          [value] => $MESSAGE 
          [options_hash] => 
         ) 
        [2] => stdClass Object 
         (
          [maxlength] => 
          [value] => $NAME_PREFIX 
          [options_hash] => stdClass Object 
           (
            [Ms.] => Ms. 
            [Mrs.] => Mrs. 
            [Mr.] => Mr. 
           ) 
         ) 
        [3] => stdClass Object 
         (
          [maxlength] => 
          [value] => $TOPIC 
          [options_hash] => stdClass Object 
           (
            [Agriculture] => AGR 
            [Animals] => AN 
            [Arts and Humanities] => ART 
           ) 
         ) 
       ) 
     ) 
) 

foreach ($json->123456->required_actions as $info) { 
     echo $info->value => $TOPIC->options_hash; 
} 

回答

0

的解决方案是通过值来搜索父对象,然后请求子对象的数组。下面是我用什么:

foreach ($json->123456->required_actions as $info) { 
     if ('$TOPIC' == $info->value) { 
     print_r($info->options_hash); 
} 
} 
+0

http://stackoverflow.com/questions/7826358/how-to-filter-an-array-of-object将是另一个,可能更快的方式做到这一点 – 2015-02-08 01:21:26