PHP与Javascript进行迭代

时间:2015-01-27 16:17:18

标签: javascript php jquery

好的,所以我试图计算IP。我有一个PHP版本和一个JQuery / Javascript版本。 PHP工作是一个梦想,除了在PHP脚本完成之前不输出到屏幕,但我没关系。我遇到的问题是jquery / javascript版本。计算第四个八分球是好的,但是当计算第三个八分球时,我有一个奇怪的问题。

基本上如果我的范围是10.211.55.254 - 10.211.56.2,我很好。但如果我要增加到10.211.56.3或更高的IP地址,我会得到以下结果:

10.211.55.250
10.211.56.250

这只会在增加时发生,减少到10.211.55.254以下仍然有效。

所以这里有各自的脚本,我在Javascript上出错/丢失了吗?

The Javascript

var startiparrayslice = startiparray.slice( 0, 2);

for ( var octet3 = startiparray[2] ; octet3 <= endiparray[2]; octet3++) {
    var pingip2 = startiparrayslice.join(".") + "." + octet3;

    if (startiparray[3] > endiparray[3]) {
        endiparrayorig = endiparray[3];
        endiparray[3] = 255;

    }


for ( var octet4 = startiparray[3] ; octet4 <= endiparray[3]; octet4++) {

    if (octet4 == endiparray[3]) {
        startiparray[3] = 0;
        endiparray[3] = endiparrayorig;

    }

    var pingip = pingip2 + "." + octet4; 

    $.post("ping-query-process.php", {  
        pingformip:pingip
    },

The PHP

$ipnetwork = array_slice($iprangestartex,0,2);
    $ip = implode(".",$ipnetwork);

    for ($octet3=$iprangestartex[2];$octet3<=$iprangeendex[2];$octet3++) {

        $ipaddress = $ip . "." . $octet3;

        if ($iprangestartex[3] > $iprangeendex[3]) {
            $iprangeendexorig = $iprangeendex[3];
            $iprangeendex[3] = "255";
        }

        for ($octet4=$iprangestartex[3];$octet4<=$iprangeendex[3];$octet4++) {

            if ($octet4 == $iprangeendex[3]) {
                $iprangestartex[3] = "0";
                $iprangeendex[3] = $iprangeendexorig;
            }

            $ipaddress4 = $ipaddress . "." . $octet4;
            $pingresult = exec("/bin/ping -c 1 $ipaddress4", $result, $status);

                if (0 == $status) {
                    $status = "alive";
                } else {
                    $status = "dead";
                }

                echo "The IP Address, $ipaddress4, is ".$status."<br /><br />";
        }
    }

1 个答案:

答案 0 :(得分:1)

嗯,我没看到那个人来了!!在测试测试测试并使用大量警报框后,我将其缩小到这样的事实:array1 [3]与array2 [3]相比没有特定数字。不要问我为什么只在某些数字上因为我不知道(请在明信片上回答)。

我能够看到数组正在尝试使用array2 [3] .constructor比较字符串,而实际上我需要比较数字。所以要实现这一点,我包括以下parseInt

if (parseInt(startiparray[3]) > parseInt(endiparray[3])) { }

这将数组元素作为数字进行比较,我能够在故障转移之前迭代3-9。

我仍然想明白为什么......由于我对发展很陌生,这是一个很好的学习曲线。

由于