PHP:从对象中获取一个密钥

问题描述:

我有一个对象只有一个键和它的值。但我不知道访问它的关键。没有枚举对象的情况下获取密钥的最有效方法是什么?PHP:从对象中获取一个密钥

+0

那么你怎么知道你有正确的钥匙? – NullUserException 2010-08-05 03:20:45

+0

你正在做'array_search'吗? – 2010-08-05 03:26:06

+2

我只是一个单一的json对象转换为php像'{“foo”:3}',我需要同时采取,键名和值。 – Pablo 2010-08-05 03:29:51

如果你只是想在所有访问值,你不需要密钥(实际上属性名):

$value = current((array)$object); 

如果你真的想属性名,试试这个:

$key = key((array)$object); 
+0

我有一个对象数组,每个对象都有一个属性,我不知道属性的名称。我使用'foreach'循环遍历数组,并且对于每个对象,我都需要键和值。我找到了这个解决方案,但是效率不是很低,因为你每次将$对象转换为数组? (对不起,如果它太基本了,但我是一个新手。一个答案将不胜感激,因为我不知道这是否明智或不)。 – Solace 2015-11-01 22:12:12

$array = array("foo" => "bar"); 

$keys = array_keys($array); 

echo $keys[0]; 

// Output: foo 

参见:http://php.net/manual/en/function.array-keys.php

+0

这真的适用于一个对象? 'stdClass :: __ set_state(array( 'tag1'=> 1, ))' – Pablo 2010-08-05 03:25:32

+0

@Michael:我的错误,我以为你试图从数组中检索密钥。在这种情况下,您最好将对象转换为数组。请参阅@ thomasrutter的示例:http://stackoverflow.com/questions/3411495/php-get-a-single-key-from-object/3411520#3411520 – gpmcadam 2010-08-05 03:27:53

+0

我最初误导以及使用单词“键” ,这是一个数组术语... – deceze 2010-08-05 03:30:59

,就可以把对象数组像这样:

$myarray = (array)$myobject; 

然后,对于只有单一值的数组,这应该取钥匙为那个价值。

$value = key($myarray); 

如果你愿意,你可以在一行中做到这一点。当然,你也可以通过枚举对象来实现,就像你在你的问题中提到的一样。

要获取价值,而不是关键,那么:

$value = current($myarray);