加载用于foreach循环的SimpleXML对象有问题:警告。为foreach()循环提供无效参数

问题描述 投票:0回答:1

我试图用以下方法从文件中加载一个简单的XML对象 simplexml_load_file();我一直在互联网上搜索,试图处理一个与后续foreach循环有关的错误。

我得到一个无效的foreach参数错误。

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

如果我试着用不同的PHP逻辑处理XML对象,我可以得到不同的错误,但是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版本可能不支持匿名函数。 是否有必要准备一个新的array()或新的 SimpleXMLElement()

请求编辑:XML是.NET的。

<bnb>  
    <review>  
        <quote></quote>  
        <location></location>  
        <date></date>  
    </review>  
    <review>  
        <quote></quote>  
        <location></location>  
        <date></date>  
    </review>  
</bnb>  
php arrays xml foreach simplexml
1个回答
0
投票

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.in510189

© www.soinside.com 2019 - 2024. All rights reserved.