PHP:从对象中获取一个密钥
如果你只是想在所有访问值,你不需要密钥(实际上属性名):
$value = current((array)$object);
如果你真的想属性名,试试这个:
$key = key((array)$object);
我有一个对象数组,每个对象都有一个属性,我不知道属性的名称。我使用'foreach'循环遍历数组,并且对于每个对象,我都需要键和值。我找到了这个解决方案,但是效率不是很低,因为你每次将$对象转换为数组? (对不起,如果它太基本了,但我是一个新手。一个答案将不胜感激,因为我不知道这是否明智或不)。 – Solace 2015-11-01 22:12:12
$array = array("foo" => "bar");
$keys = array_keys($array);
echo $keys[0];
// Output: foo
这真的适用于一个对象? 'stdClass :: __ set_state(array( 'tag1'=> 1, ))' – Pablo 2010-08-05 03:25:32
@Michael:我的错误,我以为你试图从数组中检索密钥。在这种情况下,您最好将对象转换为数组。请参阅@ thomasrutter的示例:http://stackoverflow.com/questions/3411495/php-get-a-single-key-from-object/3411520#3411520 – gpmcadam 2010-08-05 03:27:53
我最初误导以及使用单词“键” ,这是一个数组术语... – deceze 2010-08-05 03:30:59
,就可以把对象数组像这样:
$myarray = (array)$myobject;
然后,对于只有单一值的数组,这应该取钥匙为那个价值。
$value = key($myarray);
如果你愿意,你可以在一行中做到这一点。当然,你也可以通过枚举对象来实现,就像你在你的问题中提到的一样。
要获取价值,而不是关键,那么:
$value = current($myarray);
那么你怎么知道你有正确的钥匙? – NullUserException 2010-08-05 03:20:45
你正在做'array_search'吗? – 2010-08-05 03:26:06
我只是一个单一的json对象转换为php像'{“foo”:3}',我需要同时采取,键名和值。 – Pablo 2010-08-05 03:29:51