为对象键
问题描述:
PHP通配符我有时会遇到和对象是这样的:为对象键
stdClass Object
(
[batchcomplete] =>
[query] => stdClass Object
(
[pages] => stdClass Object
(
[48548] => stdClass Object
(
[pageid] => 48548
[ns] => 0
[title] => Dopamine
该对象键48548每一次的会是不同的,所以我不知道它的价值是什么样的方式。可以说,我需要在这个对象拿到冠军(多巴胺),我需要做这样的事情:
$title = $object->query->page->{*WILDCARD*}->title;
但我还没有想出一个办法做到这一点呢。有没有办法像这样跳过一个对象键,而不必找出键的值?
答
数字对象属性不起作用。假设只有一个,转换成数组,并拿到钥匙:
$array = (array)$object->query->pages;
$title = $array[key($array)]->title;
或者只是得到一个元素:
$title = current((array)$object->query->pages)->title;
如果这是从JSON来您可能需要将其作为一个解码阵列在第一位。如果没有,那么也许这:
$array = json_decode(json_encode($oject), true);
对于非数字属性这应该工作:
$var = key(get_object_vars($object->query->pages));
$title = $object->query->pages->$var->title;
谢谢,我只是你的方法去。我之前使用过CakePHP,我记得它有处理数组的各种函数,其中一个是递归数组搜索工具。我想知道是否包含这样的各种实用程序的轻量级框架。 –