当我运行此位时
$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
我并不真正对访问这些值感兴趣,而不是在他们不是属性而不是索引值的情况下找出如何保留它们。
答案 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自己的源代码,看看在这些情况下究竟发生了什么。
您想知道具体原因吗?