如何访问对象的数字属性

时间:2014-10-10 11:37:50

标签: php oop

当我运行此位时

$data = (object)array(1,2,3);
print_r($data);

我得到了

stdClass Object
(
    [0] => 1
    [1] => 2
    [2] => 3
)

这很有趣,因为直到现在我才知道对象的属性名称不能以数字开头。因此,如果这是真的,那么它必须意味着这些值不是属性,那么它们是什么呢?

我尝试访问值的几种方法

$data[0]; // Fatal error:  Cannot use object of type stdClass as array
$data->0; // Parse error:  syntax error, unexpected 0, expecting identifier
$data->{0}; // Notice:  Undefined property: stdClass::$0

我并不真正对访问这些值感兴趣,而不是在他们不是属性而不是索引值的情况下找出如何保留它们。

3 个答案:

答案 0 :(得分:1)

现在我认为这是不可能的,你需要一些技巧来解决这个问题。可能跟着技术

<?php

$data = (object)array(1,2,3);
$newData = array();
foreach($data as $k=>$v){
    print "key: $k, value: $v<br />";
    $newData[$k] = $v;
}

print $newData[0];

我不确定你的情况。如果你解释几行,这将是有帮助的

答案 1 :(得分:0)

您无法访问,因为变量(类中的属性)名称不能以数字开头。这就是为什么 - &gt; 0是错误的。

如果要使用[]访问类的属性,则必须实现ArrayAccess接口:http://php.net/manual/fr/class.arrayaccess.php

实施后,您将能够访问$ data [0]:)

答案 2 :(得分:0)

  

我真的不想访问价值而不是寻找   如果它们不是属性而不是属性,那么它们如何被保留在课堂中   索引值。

这意味着潜入PHP的内部,这可能你想找到自己。你必须检查PHP自己的源代码,看看在这些情况下究竟发生了什么。

您想知道具体原因吗?