javascript - PHP 与 Javascript 的迭代比较

标签 javascript php jquery

好的,我正在尝试计算 IP。我有一个 PHP 版本和一个 JQuery/Javascript 版本。 PHP 的工作就像一个梦想,除了在 PHP 脚本完成之前不输出到屏幕之外,但我对此表示同意。我遇到的问题是 jquery/javascript 版本。计算第 4 个八位字节很好,但是当计算第 3 个八位字节时,我遇到了一个奇怪的问题。

基本上,如果我的范围是 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 />";
        }
    }

最佳答案

好吧,我没看到那个人来!!经过测试和使用大量警报框后,我将范围缩小到 array1[3] 没有与 array2[3] 进行某些数字的比较。不要问我为什么只针对某些数字,因为我不知道(请在明信片上回答)。

我可以看到数组正在尝试使用 array2[3].constructor 来比较字符串,而实际上我需要比较数字。因此,为了实现这一目标,我添加了以下 parseInt

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

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

我仍然想了解为什么......由于我是开发新手,这是一个急剧的学习曲线。

谢谢

关于javascript - PHP 与 Javascript 的迭代比较,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28175032/

相关文章:

javascript - Vue组件数据函数——the为空

javascript - AngularJS ng-click 无法正常工作

php - 计算 OOP PHP 中返回的行数

javascript - 从 .html(或innerHtml)将结果输入到数组并使其工作

javascript - jQuery 克隆主包装内的元素

php - 使用 php str_getcsv 函数将 csv 文件数据转换为数组

php - 如何将数据发送到具有相同用户ID作为主键的两个表?

javascript - 重置 setTimeout 对象(如果存在)

javascript - 在文本框中按回车键打开链接

javascript - 如何在 Bootstrap 模式将它添加到正文以调整窗口滚动时获取 padding-right 变量的值?