首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >循环数组值

循环数组值
EN

Stack Overflow用户
提问于 2014-03-31 08:22:36
回答 1查看 113关注 0票数 1

我有个小问题:

我要重复一遍

代码语言:javascript
复制
do {
    $QUERY = "/member?id=".$counter."&action=refresh";
    $URL = $HTTP.$HTTPUSER.":".$HTTPPASS."@".$HTTPSERVER.":".$HTTPPORT.$QUERY;
    $xml = file_get_contents($URL);

    $data = new SimpleXMLElement($xml);

    $test_ip = (string)$data->c1;

    $dnsip = explode('<br>', $test_ip);

    $ext_ip = strip_tags($dnsip[1]);

    if ($ext_ip != "127.0.0.1" && $ext_ip != "localhost") {

        $dns = strip_tags($dnsip[0]);

        echo "$dns $ext_ip <br>";
    }

    $counter +=1;

} while (!empty($data));

由于数组中有很多值,所以我尝试添加以下内容

代码语言:javascript
复制
    $ports  = array('2001','2002','2003'); 

foreach ($ports as $HTTPPORT) {

echo "$HTTPPORT<br>";

$counter = 1;

do {
    $QUERY = "/member?id=".$counter."&action=refresh";
    $URL = $HTTP.$HTTPUSER.":".$HTTPPASS."@".$HTTPSERVER.":".$HTTPPORT.$QUERY;
    $xml = file_get_contents($URL);

    $data = new SimpleXMLElement($xml);

    $test_ip = (string)$data->c1;

    $dnsip = explode('<br>', $test_ip);

    $ext_ip = strip_tags($dnsip[1]);

    if ($ext_ip != "127.0.0.1" && $ext_ip != "localhost") {

        $dns = strip_tags($dnsip[0]);

        echo "$dns $ext_ip <br>";
    }

    $counter +=1;

} while (!empty($data)); }

问题是,它只使用第一个端口号(2001)执行脚本,而我不知道为什么。

有什么想法吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-03-31 11:58:57

您可能会在'do . while‘循环中得到一个异常,这会引起麻烦。

我添加了一个'try .. catch‘块和一些'echo’语句,以确保它现在总是循环所有的‘端口’。更改“catch”以将$data标记为空,然后继续。

下面是经过测试的代码:

代码语言:javascript
复制
<?php

$ports  = array('2001','2002','2003');

$counter = 0; // total count of documents

foreach($ports as $HTTPPORT) {

    echo $HTTPPORT, ' start of process port loop<br/>';

    try { // catch any error -- report it and loop round again
        do {
            $QUERY = "/member?id=".$counter."&action=refresh";
            $URL = ''; // $HTTP.$HTTPUSER.":".$HTTPPASS."@".$HTTPSERVER.":".$HTTPPORT.$QUERY;
            try {
                $xml = file_get_contents($URL);
                $data = new SimpleXMLElement($xml);
            }
            catch (Exception $e) { // ignore any errors
                echo 'SimpleXMLElement : oops :', $e->getMessage(), '<br />';
                $data = ''; // mark as empty
            }

            if (!empty($data)) { // process data
                $test_ip = (string)$data->c1;
                $dnsip = explode('<br>', $test_ip);

                $ext_ip = strip_tags($dnsip[1]);

                if ($ext_ip != "127.0.0.1" && $ext_ip != "localhost") {

                    $dns = strip_tags($dnsip[0]);

                    echo "$dns $ext_ip <br>";
                }
            }

            $counter +=1;

        } while (!empty($data));

    } // end of try to get and process a document...
    catch (Exception $e) { // catch all errors for now
        echo 'Processing List of Ports: oops! :', $e->getMessage(), '<br />';
    }
} // end of foreach port
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22756748

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档