繁体   English   中英

多维stdClass对象

[英]multi-dimensional stdClass Object

我从PHP的json提要中输出了一个相当大的多维stdClass对象。

它大约需要8或9步,而我所需的数据大约需要7步。

我想知道我是否可以轻松地抓住全部之一而不是这样做:

echo $ data-> one-> two-> anotherone-> gettinglong-> omg-> hereweare;

我说这是因为数据结构可能会随着时间而变化。

这可能吗?

并非没有寻找可能效率低下的东西。 Json是一个结构化数据对象,其目的是消除这种情况。

您可以尝试将对象解析为数组,然后在数组中搜索所需的值,它只会不断遍历对象的每个级别。

function parseObjectArrayToArray($objectPassed, &$in_arr = array()) { 
    foreach($objectPassed as $element) {
        if(is_object($element) || is_array($element)) {
            parseObjectArrayToArray($element,$in_arr);
        } else {
            // XML is being passed, need to strip it
            $element = strip_tags($element); 

            // Trim whitespace
            $element = trim($element);

            // Push to array  
            if($element != '' && !in_array($element,$in_arr)) {                
                  $in_arr[] = $element;  
            } 
        }
    }
    return $in_arr;
}

怎么打

$parsed_obj_arr = parseObjectArrayToArray($objectPassed);

如果数据结构可以更改,但不是经常更改,那么最好的选择是编写一个包装对象,这样您只需在更改的单个点更改路径:

class MyDataWrapp {
   public $json;
   function __construct($jsonstring){
      $this->json = json_decode($jsonstring);
   }
   function getHereWeAre(){
       return $this->json->one->two->anotherone->gettinglong->omg->hereweare;
   }
}

如果数据结构发生巨大且持续的变化,我json_decode作为一个数组数组,并可能使用RecursiveFilterIterator

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM