我已将数组转换为对象数据,如下所示:
<?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;
?>
......没有回复!我希望它能回应“一个”。
我做错了吗?
答案 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];
如果我没弄错的话。