当while循环结束时,它会停止整个脚本,它不会循环使用(....)循环的初始化

时间:2016-06-30 14:03:48

标签: php while-loop

  1. 问题第一个初始循环在哪里(for($ i = 0; $ i< $ m; $ i ++)停止 当while循环结束时,while循环应该为每个循环运行 数组中的值p&这应该发生在最初的 环。我究竟做错了什么?为什么整个脚本停止了 while()循环结束

    $p = array(1,4,16);
    $q = array(26,10,20);
    solution2($p,$q);
    
    // searches the prime numbers for for a given range
    // range is p[0] - q[0]
    // script needs to loop the entire array p
    
    // problem is afther the while loop ends the complete script ends
    // It wont continue the initial for($i=0;$i<$m;$i++){ loop
    // what am i doing wrong?
    function solution2($p, $q){
    
        $primes = array();
        $semieprimes = array();
    
        // P & Q are arrays with M intergers in it representing a range to seach prime numbers in: p[0] to q[]0], p[1] tot q[1] etc
        $m = count($p);
        echo "<br>m= ".$m."<br>";
        for($i=0;$i<$m;$i++){
            echo "i:".$i."<br>";
            $inrange = true;
            $start = $p[$i];
            $end   = $q[$i];
            $number = $start;
            echo $start."-".$end."<br>";
            while($inrange){
                // Prime number can only be divided by 1 or itself
                for($i=2;$i<=$number;$i++){
                    if(   (!($number==$i)) && (fmod($number ,$i))==0  ) {
                        echo $number." is not prime number<br>";
                        break;
                    }
                    if(($number==$i)) {
                        echo $number." is a prime number<br>";
                        $primes[] = $number;
                    }
                }
                $number++;
                if($number > $end) { $inrange = false; echo "stop?"; }
            }
            $inrange=true;
        }
        var_dump($primes);
    }
    
  2. 当$ number&gt;时,while循环停止。 $ end(结束 范围)

2 个答案:

答案 0 :(得分:0)

您在两个for循环中都使用$i。当您在第二个循环中更新它时,第一个循环将使用该新值。对第二个$j循环使用其他变量,例如for

答案 1 :(得分:0)

你在外部和内部for循环使用$ i。如果你的内部循环导致$ i大于或等于$ m,则外部for循环将因$ i而退出