Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
未正确设置PHP数组_Php_Arrays_Simplexml - Fatal编程技术网

未正确设置PHP数组

未正确设置PHP数组,php,arrays,simplexml,Php,Arrays,Simplexml,我尝试使用以下代码从XML文件中读取一些RSS提要详细信息: $this->feedFile = file_get_contents(__ROOT__ . '/assets/feedList.xml'); //Define this externally $this->feedDetailsArray = array(); $this->feedXML = new SimpleXMLElement($this->feedFile); echo "1. ========="

我尝试使用以下代码从XML文件中读取一些RSS提要详细信息:

$this->feedFile = file_get_contents(__ROOT__ . '/assets/feedList.xml'); //Define this externally
$this->feedDetailsArray = array();
$this->feedXML = new SimpleXMLElement($this->feedFile);
echo "1. =========";
print_r($this->feedXML);
echo "1. =========";
foreach($this->feedXML->Feed as $feedItem) {
    echo "2. =========";
    echo "AJ:: feedName " . var_dump($feedItem->FeedName) . " feedURL " . var_dump($feedItem->FeedURL) . "\n";
    echo "2. =========";
    $feedDetails = array(
        "feedName" => $feedItem->FeedName,
        "feedURL" => $feedItem->FeedURL/*,
        'favIconURL' => $feedItem->FavIconURL
        );
    echo "3. =========";
    var_dump($feedDetails);
    echo "3. =========";
打印输出如下内容:

1. =========SimpleXMLElement Object
(
    [Feed] => Array
        (
            [0] => SimpleXMLElement Object
                (
                    [FeedName] => Hacker News
                    [FeedURL] => http://news.ycombinator.com/rss
                    [FavIconURL] => http://ycombinator.com/favicon.ico
                    [Segment] => Startups
                )

    .
    .
    .
第一个变量转储(
echo“feedName”。变量转储($feedItem->feedName)。“feedURL”。变量转储($feedItem->feedURL)。“\n”
)输出:

和第二个var_转储输出:

3. =========array(2) {
  'feedName' =>
  class SimpleXMLElement#38 (1) {
        string(11) "Hacker News"
  }
  'feedURL' =>
  class SimpleXMLElement#37 (1) {
        string(31) "http://news.ycombinator.com/rss"
  }
}
3. =========
我的问题是,为什么语句
“feedName”=>$feedItem->feedName
会导致分配对象而不是SimpleXML对象的值?我只想要值,而不是对象。有人能指出我做错了什么吗?

SimpleXML在其对象上实现了,否则这些对象由对象引用指定。在
echo
ed字符串的上下文中使用它们时(作为一个示例),您将得到返回的字符串值,但在正常赋值或引用中,您将得到整个
simplexmlement
对象

如果需要字符串值,可以将其转换为字符串:

$feedDetails = array(
    "feedName" => (string)$feedItem->FeedName,
    "feedURL" => (string)$feedItem->FeedURL
 );
$feedDetails = array(
    "feedName" => (string)$feedItem->FeedName,
    "feedURL" => (string)$feedItem->FeedURL
 );