PHP使用数字键引用对象数据

PHP使用数字键引用对象数据,php,Php,我已将数组转换为如下所示的对象数据: <?php $myobject->data = (object)Array('zero','one','two'); print_r($myobject); ?> 输出为: stdClass对象([data]=>stdClass) 对象([0]=>0[1]=>1[2]=> 二) 到目前为止还不错。但是如果我试着参考数字键 <?php $myobject->data = (object)Array('zero','one',

我已将数组转换为如下所示的对象数据:

<?php
$myobject->data = (object)Array('zero','one','two');
print_r($myobject);
?>

输出为:

stdClass对象([data]=>stdClass) 对象([0]=>0[1]=>1[2]=> 二)

到目前为止还不错。但是如果我试着参考数字键

<?php
$myobject->data = (object)Array('zero','one','two');
$counter = 1;
echo $myobject->data->$counter;
?>

……什么也不退!我希望它能回应“一”

我做错了吗?

您可以尝试将其作为数组元素访问。但我不确定这是否有效。 但是,您可以使用foreach循环在对象元素(或者更确切地说是属性)上循环

像这样:

foreach ($myobject->data as $key => $value)
    echo "$key is my key.<br />";
foreach($myobject->data as$key=>$value)
echo“$key是我的钥匙。
”;
我只是不确定你是否也能拿到钥匙

echo $myobject->data[$counter];

如果我没弄错的话。

这在PHP中是一个奇怪的现象,您需要使用
$object->data->{1}
访问它。或者可以将其转换回数组以访问成员。但我认为最好为对象成员指定适当的名称,例如:

$myobject->data = (object)Array('m0' => 'zero','m1' => 'one','m2' => 'two');
$myObject->data->m1;

您遇到的问题是,
$counter
会自动转换为字符串进行查找。试一试

$myobject->$counter = "abc";
var_dump($myobject);

你会明白我的意思。为了避免这种情况,请使用Franz提出的方法。

只要该类没有实现ArrayAccess,您就不能以这种方式访问它:您测试过吗?我想知道它是否有效。否则,就用索尔梅奇的解决方案。