navy92f 发表于 2010-10-4 19:33:13

问个PHP问题

请问一个问题:
为什么一个变量可以看起来又是对象又是数组?
echo $foo->bar;
echo $foo["name"];

比如在SimpleXMLElement 类解析返回结果的时候,其结果就是这样的。bar是他的一个子节点,name是他的属性。

我好像没见过这样的变量,自己也弄不出来?

求点拨

saturn 发表于 2010-10-4 23:29:53

这就是一个stdclass或者一个普通类中的成员变量,与数组间的相互转化了.

http://www.tinoweb.cn/2010/02/16/php-stdclass/

navy92f 发表于 2010-10-5 11:15:51

回复 2# saturn

这是转化啊 我指的是一个变量既可以通过数组的方式访问 同时也可以使用对象的方式访问 .

是不是通过__get实现的?
怎么打印出这个对象的方法?
比如:
--------------------------------

<?php
$string = <<<XML
<?xml version='1.0'?>
<document responsecode="200">
<result count="10" start="0" totalhits="133047950">
    <title>Test</title>
    <from>Jon</from>
    <to>Tsung</to>
</result>
</document>
XML;

$xml = simplexml_load_string($string);
echo '<pre>';
print_r($xml);
echo '</pre>';

echo $xml['responsecode'];
echo '<br/>';
echo $xml->result->title;

?>
----------------------------
SimpleXMLElement Object
(
    [@attributes] => Array
      (
             => 200
      )

    => SimpleXMLElement Object
      (
            [@attributes] => Array
                (
                   => 10
                   => 0
                   => 133047950
                )

             => Test
             => Jon
             => Tsung
      )

)

200
Test

visvoy 发表于 2010-10-5 15:38:39

基础的东西多看php手册$methodsArray=get_class_methods('SimpleXMLElement');

saturn 发表于 2010-10-5 16:16:09

问个PHP问题

我的意思是如果你研究过我上面说的 你就应该知道get_object_vars还有vivory说说的此类函数。


- 发送自我的 iPhone 大板凳应用

navy92f 发表于 2010-10-5 16:23:05

回复 4# visvoy


谢谢

navy92f 发表于 2010-10-5 16:31:05

回复 5# saturn

我没来得及研究呢 我用get_object_vars 和 get_class_methods 看了$xml这个对象,但是里面没有什么特殊的,也没有get方法啊.

我现在想知道的是 $xml是什么类型 为什么可以有两种访问方法 以及 如何自己造一个这样的变量??
页: [1]
查看完整版本: 问个PHP问题