获取PHP stdObject中的第一个元素
我有一个对象(存储为$video),看起来像这样
object(stdClass)#19 (3) { [0]=> object(stdClass)#20 (22) { ["id"]=> string(1) "123" etc...
我想获得第一个元素的ID,而不必循环。
如果它是一个数组,我会这样做:
$videos[0]['id']
它曾经是这样工作的:
$videos[0]->id
但是现在我在上面显示的行中出现一个错误“不能使用types为stdClass的对象作为数组…”。 可能是由于PHP升级。
那么我怎样才能得到第一个ID没有循环? 可能吗?
谢谢!
只需使用{}
例:
$videos{0}->id
这样你的对象就不会被销毁,你可以很容易地遍历对象。
对于PHP 5.6及以上版本使用这个
$videos{0}['id']
array()和stdClass对象都可以使用current()
key()
next()
prev()
reset()
end()
函数来访问。
所以,如果你的对象看起来像
object(stdClass)#19 (3) { [0]=> object(stdClass)#20 (22) { ["id"]=> string(1) "123" etc...
那你就可以做;
$id = reset($obj)->id; //Gets the 'id' attr of the first entry in the object
如果你出于某种原因需要钥匙,你可以做;
reset($obj); //Ensure that we're at the first element $key = key($obj);
希望这对你有用。 :-)在PHP 5.4上,即使在超严格模式下也没有错误
正确:
$videos= (Array)$videos; $video = $videos[0];
你可以循环的对象,也许在第一个循环中断…类似的东西
foreach($obj as $prop) { $first_prop = $prop; break; // or exit or whatever exits a foreach loop... }
更容易:
$firstProp = current( (Array)$object );
$videos->{0}->id
为我工作。
由于$video和{0}都是对象,因此我们必须使用$videos->{0}->id
。 大括号需要在0左右,因为省略大括号会产生一个语法错误:意外的'0',期待标识符或variables或'{'或'$'。
我正在使用PHP 5.4.3 。
在我的情况下, $videos{0}->id
和$videos{0}['id']
工作,并显示错误:
不能使用stdClasstypes的对象作为数组。
玩Php交互式shell,Php 7:
➜ ~ php -a Interactive shell php > $v = (object) ["toto" => "hello"]; php > var_dump($v); object(stdClass)#1 (1) { ["toto"]=> string(5) "hello" } php > echo $v{0}; PHP Warning: Uncaught Error: Cannot use object of type stdClass as array in php shell code:1 Stack trace: #0 {main} thrown in php shell code on line 1 Warning: Uncaught Error: Cannot use object of type stdClass as array in php shell code:1 Stack trace: #0 {main} thrown in php shell code on line 1 php > echo $v->{0}; PHP Notice: Undefined property: stdClass::$0 in php shell code on line 1 Notice: Undefined property: stdClass::$0 in php shell code on line 1 php > echo current($v); hello
只有current
正在与对象。