我想使用simplexml循环遍历xml中的属性,但它不能很好地工作。
当我在浏览器中查看输出时,只输出一行。当我试图通过命令行运行脚本时,我收到以下错误消息:
PHP警告:在第11行的/var/www/test/index.php中为foreach()提供的参数无效
这是我的php代码:
#!/usr/bin/php
<?php
$xml = simplexml_load_file("test.xml");
for($i = 0; $i < 1000; $i++)
{
foreach($xml->packet->proto[$i] as $a)
{
if($a->attributes() == "http.request.full_uri" || $a->attributes() == "ip.src")
{
echo $a->attributes() . ": " . $a->attributes()->showname . "<br>" ;
}
}
}
?>
任何可以帮助我获取具有if子句中指定名称的所有属性的人吗?
答案 0 :(得分:0)
你的问题在于:
for($i = 0; $i < 1000; $i++)
为什么要检查1000个$xml->packet->proto
条目?看起来没有那么多。你应该在那里使用foreach
- 像这样:
foreach($xml->packet->proto as $proto) {
foreach($proto as $a) {
// ...
我有点猜测你的XML是如何构建的,但希望这有助于指出你正确的方向。错误消息Invalid argument supplied for foreach()
有点告诉您问题。这是因为你试图访问$xml->packet->proto[$i]
$i
是一个超出界限的索引,导致错误。