Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.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中的foreach循环获取的参数无效_Php_Loops_Foreach - Fatal编程技术网

php中的foreach循环获取的参数无效

php中的foreach循环获取的参数无效,php,loops,foreach,Php,Loops,Foreach,当使用以下代码时,我得到“提供的参数无效”。我可以成功解析ip地址和端口号,但我不知道如何一次获取多个。我的foreach循环不工作。有什么想法吗 $dom = new DOMDocument(); $dom->loadHTMLFile($url); $xml = simplexml_import_dom($dom); $dom_results = $xml->xpath("/html/body/div[@id='subpagebgtabs']/div[@id='container'

当使用以下代码时,我得到“提供的参数无效”。我可以成功解析ip地址和端口号,但我不知道如何一次获取多个。我的foreach循环不工作。有什么想法吗

$dom = new DOMDocument();
$dom->loadHTMLFile($url);
$xml = simplexml_import_dom($dom);
$dom_results = $xml->xpath("/html/body/div[@id='subpagebgtabs']/div[@id='container']/table[@id='listtable']");

$ip_address = $dom_results[0]->tr->td[1]->span;
$ip_post = $dom_results[0]->tr->td[2];

$address_parts = $ip_address.":".$ip_post;

foreach ($address_parts as $address_full){
    echo $address_full . "<br>";
}

我想这就是你想要的:

// If results are found
if ( ! empty($dom_results) )
  // Loop through each result. Based on your XPath query, the $dom_results
  // contains tables. This loops through the rows of the first table.
  foreach ( $dom_results[0]->tr as $row )
  {
    $ip_address = $row->td[1]->span;
    $ip_post = $row->td[2];

    // Output the address
    echo $ip_address . ":" . $ip_post . "<br />";
  }
//如果找到结果
如果(!empty($dom_results))
//循环检查每个结果。根据您的XPath查询,$dom\u结果
//包含表。这将遍历第一个表的行。
foreach($dom_results[0]->tr as$row)
{
$ip_地址=$row->td[1]->span;
$ip_post=$row->td[2];
//输出地址
echo$ip_地址。“:”$ip_帖子。“
”; }
您似乎想要提取所有ip地址和端口号,并将其像

IP地址:端口

所以试试这个

foreach($dom_results as $dom) {
  $ip = $dom->tr->td[1]->span;
  $port = $dom->tr->td[2];
  $address = $ip . ":". $port;
  echo $address . "<br />";
}
foreach($dom\u结果为$dom){
$ip=$dom->tr->td[1]->span;
$port=$dom->tr->td[2];
$address=$ip.“:”$port;
echo$地址。“
”; }
$address\u parts
在我看来不像数组。我可以看到$address\u parts不是数组。你知道$address\u parts应该是数组吗?@todda.speot.is我对$dom\u结果进行了变量转储并更新了我的帖子。你能解释一下我现在如何返回所有的ip地址和端口号吗?你想在这里用ip地址做什么?如果你解释一下,我们可以给你一个答案。我想这是我需要的,但它只返回页面上ip地址的1。有没有一种方法可以让它一次返回所有数据?@sarsar-我已经更新了答案,以循环遍历每个表行(TR),而不是每个表。这可能会解决问题。目前还不太清楚(现在仍然不清楚)数据是如何存储在您试图解析的表中的。
foreach($dom_results as $dom) {
  $ip = $dom->tr->td[1]->span;
  $port = $dom->tr->td[2];
  $address = $ip . ":". $port;
  echo $address . "<br />";
}