微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

php – 使用SimpleXMLElement从对象获取数组

在这些对象中获取数组时遇到了一些问题.当我print_r()时,将打印以下代码. $message_object是对象的名称.

SimpleXMLElement Object
(
    [header] => SimpleXMLElement Object
        (
            [responsetime] => 2012-12-22T14:10:09+00:00
        )

    [data] => SimpleXMLElement Object
        (
            [id] => Array
                (
                    [0] => 65233
                    [1] => 65234
                )

            [account] => Array
                (
                    [0] => 20992
                    [1] => 20992
                )

            [shortcode] => Array
                (
                    [0] => 3255
                    [1] => 3255
                )

            [received] => Array
                (
                    [0] => 2012-12-22T11:04:30+00:00
                    [1] => 2012-12-22T11:31:08+00:00
                )

            [from] => Array
                (
                    [0] => 6121843347
                    [1] => 6121820166
                )

            [cnt] => Array
                (
                    [0] => 24
                    [1] => 25
                )

            [message] => Array
                (
                    [0] => Go tramping wellington 11-30
                    [1] => Go drinking Matakana 2pm
                )

        )

)

我试图用foreach从对象中获取id数组:

foreach($message_object->data->id AS $id) {
    print_r($id);
}

发送以下回复

SimpleXMLElement Object ( [0] => 65233 ) SimpleXMLElement Object ( [0] => 65234 )

我如何获得[0]的值或者我是否会犯这个错误?有没有办法循环结果并获得对象键?

我试图回显$id [0]但它没有返回任何结果.

解决方法:

当你在SimpleXMLElement上使用print_r时,它们之间会产生魔力.所以你看到的实际上并不是什么.它提供了丰富的信息,但与普通对象或数组不同.

要回答您的问题如何迭代:

foreach ($message_object->data->id as $id)
{
    echo $id, "\n";
}

回答如何将这些转换为数组:

$ids = iterator_to_array($message_object->data->id, 0);

因为这仍然会给你SimpleXMLElements但是你可能希望有值,你可以在使用时将每个元素转换为字符串,例如:

echo (string) $ids[1]; # output second id 65234

或将整个数组转换为字符串:

$ids = array_map('strval', iterator_to_array($message_object->data->id, 0));

或者整数:

$ids = array_map('intval', iterator_to_array($message_object->data->id, 0));

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。