用户
 找回密码
 入住 CI 中国社区
搜索
查看: 3108|回复: 6
收起左侧

问个PHP问题

[复制链接]
发表于 2010-10-4 19:33:13 | 显示全部楼层 |阅读模式
请问一个问题:
为什么一个变量可以看起来又是对象又是数组?
echo $foo->bar;
echo $foo["name"];

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

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

求点拨
发表于 2010-10-4 23:29:53 | 显示全部楼层
这就是一个stdclass或者一个普通类中的成员变量,与数组间的相互转化了.

http://www.tinoweb.cn/2010/02/16/php-stdclass/
 楼主| 发表于 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
        (
            [responsecode] => 200
        )

    [result] => SimpleXMLElement Object
        (
            [@attributes] => Array
                (
                    [count] => 10
                    [start] => 0
                    [totalhits] => 133047950
                )

            [title] => Test
            [from] => Jon
            [to] => Tsung
        )

)

200
Test
发表于 2010-10-5 15:38:39 | 显示全部楼层
基础的东西多看php手册$methodsArray=get_class_methods('SimpleXMLElement');
发表于 2010-10-5 16:16:09 | 显示全部楼层

问个PHP问题

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


- 发送自我的 iPhone 大板凳应用
 楼主| 发表于 2010-10-5 16:23:05 | 显示全部楼层
回复 4# visvoy


谢谢
 楼主| 发表于 2010-10-5 16:31:05 | 显示全部楼层
回复 5# saturn

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

我现在想知道的是 $xml是什么类型 为什么可以有两种访问方法 以及 如何自己造一个这样的变量??

本版积分规则