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,您就不能以这种方式访问它:您测试过吗?我想知道它是否有效。否则,就用索尔梅奇的解决方案。