我似乎对此有什么不知所措,我试图解析一些信息但是stdClass会一直在改变,所以我不太确定如何处理它并且可以使用来指导
//查询
$query = new EntityFieldQuery;
$result = $query
->entityCondition('entity_type', 'taxonomy_term')
->propertyCondition('name', 'GOOG')
->propertyCondition('vid', '3')
->execute();
//这是输出
Array
(
[taxonomy_term] => Array
(
[1868] => stdClass Object
(
[tid] => 1868
)
)
)
现在我可以使用
来达到这个目标$result['taxonomy_term']['1868']->tid
但如前所述,stdClass将始终在变化。
答案 0 :(得分:2)
你可以像这样使用recurssive数组搜索:
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;
}
<强>用法:强>
$arr = (array) $yourObject;
$keypath = array_searchRecursive('tid', $arr);
示例:强>
$class = new stdClass;
$class->foo = 'foo';
$class->bar = 'bar';
$arr = (array) $class;
$keypath = array_searchRecursive('foo', $arr);
print_r($keypath);
<强>结果:强>
Array
(
[0] => foo
)
现在要获得实际价值:
echo $keypath[0]; // foo