2016-11-29 32 views
0

我有一些JSON,如果我var_dump输出的样子:检索PHP属性名作为字符串

var_dump($oJSON->{$oQ->sQuestionName}); 

object(stdClass)[14] 
    public 'Lease' => boolean true 

我想找回“租赁”作为一个字符串。

我试过浇铸:

(string)$oJSON->{$oQ->sQuestionName} 

但它返回一个E_RECOVERABLE

E_RECOVERABLE_ERROR Error: Object of class stdClass could not be converted to string 

下面的作品,但是我觉得必须有一个更好的办法?

array_shift(array_values(array_keys(get_object_vars($oJSON->{$oQ->sQuestionName})))); 

N.B.我不能用它来使用下列由于兼容性问题

array_keys(get_object_vars($oJSON->{$oQ->sQuestionName}))[0] 
+1

*由于兼容性问题,我无法使用以下内容*只是将它分成两行。 – Rizier123

+0

是的,我可以做到这一点。分配给var,然后转到第一个pos。但是它觉得必须有其他方法吗? – atoms

回答

1

使用ReflectionClass::getProperties()获取对象属性的列表。

$reflect = new ReflectionClass($foo); 
$props = $reflect->getProperties(ReflectionProperty::IS_PUBLIC | ReflectionProperty::IS_PROTECTED); 
+0

看起来不错,也会做一些有趣的读物,欢呼! – atoms

1

您可以将所需的对象转换为数组第一

$array = (array) $oJSON->{$oQ->sQuestionName}; 

然后你就可以对自己的第一个元素的关键

echo key($array); // Should say Lease 

Fiddle

0

您可以使用json_decode与第二个参数true

例如:

$str = '{"0":{"id":"123","name":"Title"}}'; 
var_dump(json_decode($str,true)); 

所以,你将与字符串对象的数组。