首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >解析随机stdClass

解析随机stdClass
EN

Stack Overflow用户
提问于 2012-07-02 02:59:04
回答 1查看 195关注 0票数 2

关于这个,我似乎有点迷失了方向,我试图解析出一些信息,但stdClass总是在变化,所以我不太确定该怎么做,可以使用come指导。

//查询

代码语言:javascript
复制
$query = new EntityFieldQuery;
$result = $query
  ->entityCondition('entity_type', 'taxonomy_term')
  ->propertyCondition('name', 'GOOG')
  ->propertyCondition('vid', '3')
  ->execute();

//这是输出

代码语言:javascript
复制
Array
(
    [taxonomy_term] => Array
        (
            [1868] => stdClass Object
                (
                    [tid] => 1868
                )

        )

)

现在我可以使用下面的命令来访问tid

代码语言:javascript
复制
$result['taxonomy_term']['1868']->tid

但正如前面提到的,stdClass将一直在变化。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-07-02 03:03:35

您可以像这样使用递归数组搜索:

代码语言:javascript
复制
function array_searchRecursive( $needle, $haystack, $strict=false, $path=array() )
{
    if( !is_array($haystack) ) {
        return false;
    }

    foreach( $haystack as $key => $val ) {
        if( is_array($val) && $subPath = array_searchRecursive($needle, $val, $strict, $path) ) {
            $path = array_merge($path, array($key), $subPath);
            return $path;
        } elseif( (!$strict && $val == $needle) || ($strict && $val === $needle) ) {
            $path[] = $key;
            return $path;
        }
    }
    return false;
}

使用:

代码语言:javascript
复制
$arr = (array) $yourObject;
$keypath = array_searchRecursive('tid', $arr);

示例:

代码语言:javascript
复制
$class = new stdClass;
$class->foo = 'foo';
$class->bar = 'bar';
$arr = (array) $class;
$keypath = array_searchRecursive('foo', $arr);
print_r($keypath);

结果:

代码语言:javascript
复制
Array
(
    [0] => foo
)

因此,现在要获取实际值:

代码语言:javascript
复制
echo $keypath[0]; // foo
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11284826

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档