代码之家  ›  专栏  ›  技术社区  ›  Al.

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

php
  •  11
  • Al.  · 技术社区  · 15 年前

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

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

    输出为:

    stdclass对象([数据]=>stdclass 对象([0]=>零[1]=>一[2]=> 二)

    到现在为止,一直都还不错。但是如果我试着用数字键…

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

    …什么都没有还!我希望它能呼应“一”。

    我做错了吗?

    4 回复  |  直到 15 年前
        1
  •  19
  •   soulmerge    15 年前

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

    $myobject->data = (object)Array('m0' => 'zero','m1' => 'one','m2' => 'two');
    $myObject->data->m1;
    
        2
  •  1
  •   Franz    15 年前

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

    像这样:

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

    我只是不确定你是否也能拿到钥匙。

        3
  •  1
  •   Boldewyn    15 年前

    你的问题是 $counter 自动转换为字符串进行查找。尝试

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

    你会明白我的意思的。为了避免这种情况,弗兰兹提出了一种方法。

        4
  •  -3
  •   Ben Dauphinee    15 年前
    echo $myobject->data[$counter];
    

    如果我没弄错的话。