加载 SimpleXML 对象以在 foreach 循环中使用时出现问题:警告:为 foreach() 提供的参数无效


Trouble loading SimpleXML object for use in foreach loop : Warning: Invalid argument supplied for foreach()

我正在尝试使用simplexml_load_file();从文件加载一个简单的XML对象我一直在互联网上搜索,试图通过随后的 foreach 循环来处理错误。

我收到无效的 foreach 参数错误:

Warning: Invalid argument supplied for foreach() in C:Hosting'bnb'assets'reviews.php on line 2

如果我尝试处理 XML 对象的不同 PHP 逻辑,我可能会得到不同的错误,但是 foreach 参数从未显示正值,即使var_dump加载到文件末尾都没有问题。

其他一些错误是:

Parse error: syntax error, unexpected T_FOREACH in SERVER_PATH on line 646
Or : Warning: Invalid argument supplied for foreach() in SERVER_PATH on line 648
Parse error: syntax error, unexpected '}' in C:Hosting'bnb'index.php on line 658

PHP 是 :

<?php $xml = simplexml_load_file('reviews.xml'); ?>
<?php foreach ($xml->bnb->review as $n_review): ?> 
                    <ul>
                        <li>
                        <div class="avatar"><a href="#"><img src="img/svg/audio.svg" alt=""></a></div>
                        <div class="comment_right clearfix">
                            <div class="comment_info">
                                <a href="#"> 
                                    <?php echo $n_review->location;?></a><span>|</span>
                                    <?php echo $n_review->date;?> 
                            </div>
                            <p>
                                 <?php echo $n_review->quote; ?>
                            </p>
                        </div>
                        </li>
                    </ul>
<?php endforeach; ?>

有些人提到不使用HTTP(因为这可以被服务器设置阻止),或者为内存控制抽象准备一个字符串可以帮助:

//$feed = file_get_contents('ABSOLUTE_URL');
//$items = simplexml_load_string($feed);    

有人提到有些人可能有一个不支持匿名函数的PHP版本。 是否有必要准备一个新的数组()或新的SimpleXMLElement()

请求的编辑:XML 是 :

<bnb>  
    <review>  
        <quote></quote>  
        <location></location>  
        <date></date>  
    </review>  
    <review>  
        <quote></quote>  
        <location></location>  
        <date></date>  
    </review>  
</bnb>  

1. $xml可以吗?

如果var_dump($xml)给出这样的东西:

object(SimpleXMLElement)#1 (1) {
...

则您已成功将 XML 加载到 $xml 中。

2. foreach语句中的路径不正确:

$xml表示根节点<bnb>。您的语句$xml->bnb->review转换为 /bnb/bnb/review ,这在您的 XML 中不存在,因此会出现错误消息。

这是正确的路径:

foreach ($xml->review as $n_review) {
    
    // (...)
}

查看实际操作:https://eval.in/510189