PHP用数字键引用对象数据

时间:2009-11-04 12:33:54

标签: php

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

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

输出是:

  

stdClass对象([data] =&gt; stdClass   对象([0] =&gt;零[1] =&gt;一[2] =&gt;   二)))

到目前为止一切顺利。但是,如果我尝试引用数字键......

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

......没有回复!我希望它能回应“一个”。

我做错了吗?

4 个答案:

答案 0 :(得分:19)

这在PHP中很奇怪,您需要使用$object->data->{1}访问它。或者您可以将其转换回数组以访问成员。但我认为最好为对象成员设置适当的名称,尝试这样的事情,例如:

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

答案 1 :(得分:1)

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

像这样:

foreach ($myobject->data as $key => $value)
    echo "$key is my key.<br />";

我不确定你是否也可以访问密钥。

答案 2 :(得分:1)

您遇到的问题是,$counter会自动转换为String以进行查找。试试

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

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

答案 3 :(得分:-3)

echo $myobject->data[$counter];

如果我没弄错的话。