无法加载用于 foreach 循环的 SimpleXML 对象:警告:为 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
如果我尝试不同的 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 版本可能不支持匿名函数。是否有必要准备一个 new array() 或 new 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
我正在尝试使用 simplexml_load_file();
从文件中加载一个简单的 XML 对象
我一直在互联网上四处搜寻,试图通过随后的 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 版本可能不支持匿名函数。是否有必要准备一个 new array() 或 new 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