php 中的有线多维数组问题


Wired multi-dimensional array issue in php

我正在尝试获取rss提要并将节点值推送到数组。我虽然我的以下 php 代码将创建一个单一数组而不是多维数组。

 //parse rss
    $contents= file_get_contents('http://rss..');
    $xmlStr= simplexml_load_string($contents); 

    $array=array();
          foreach ($xmlStr->item as $node):
                  $array[]=$node->title;
                 echo '<pre>';
                    print_r($array);
                 echo '<pre>';

           endforeach;

但事实证明我的数组输出是

Array
(
    [0] => SimpleXMLElement Object
        (
            [0] => App Store Bug Corrupts Binaries; Angry Birds Crash
        )
    [1] => SimpleXMLElement Object
        (
            [0] => In UK, HTC Defeats Apple's "Obvious" Slide Unlock Patent
        )
    [2] => SimpleXMLElement Object
        (
            [0] => WikiLeaks Begins Release of 2.5m Syrian Emails
        )
    [3] => SimpleXMLElement Object
        (
            [0] => A Critical Examination of Bill Gates' Philanthropic Record
        )
    [4] => SimpleXMLElement Object
        (
            [0] => Ask Slashdot: How Does Your Company Evaluate Your Performance?
        )
    [5] => SimpleXMLElement Object
        (
            [0] => UAV Cameras an Eye In the Sky For Adventurous Filmmakers
        )
    [6] => SimpleXMLElement Object
        (
            [0] => Copyrights To Reach Deep Space
        )
    [7] => SimpleXMLElement Object
        (
            [0] => FDA Approves HIV Home-Use Test Kit
        )
    [8] => SimpleXMLElement Object
        (
            [0] => Texas Scientists Regret Loss of Higgs Boson Quest
        )
    [9] => SimpleXMLElement Object
        (
            [0] => Icelandic MP Claims US Vendetta Against WikiLeaks
        )
    [10] => SimpleXMLElement Object
        (
            [0] => Microsoft's 'Cannibalistic Culture'
        )
    [11] => SimpleXMLElement Object
        (
            [0] => Android 4.1 Jelly Bean Review
        )
)

知道如何改变这一点吗?多谢。

您需要将每个节点强制转换为一个字符串(它当前是一个 SimpleXMLElement),以便返回简单数组中的纯字符串,并从 title[] 数组中检索第一项。

SimpleXML 在其对象上实现了__toString()魔术方法,这就是为什么它会以它的方式响应print_r(),但要将检索它用作字符串,您需要将其强制转换为字符串。

foreach ($xmlStr->item as $node):
   // Cast the first array value to a string
   $array[] = (string)$node->title[0];
   echo '<pre>';
     print_r($array);
   echo '<pre>';
endforeach;