簡體   English   中英

遍歷數組值

[英]Loop through array values

我有一個小問題:

我需要重復一遍

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));

數組中有多少次值,所以我嘗試添加

    $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)執行腳本,而我找不到原因。

有任何想法嗎?

您可能在“ do .. while”循環中遇到一個異常,這會引起麻煩。

我添加了一個“ try .. catch”塊和一些“ echo”語句,以確保它現在始終循環所有“端口”。 更改了'catch'以將$ data標記為空,然后繼續。

這是經過測試的代碼:

<?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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM