3

私はphpでこのコードを使用します:

while (0 != $date1 || $this->counter < 5 ) {
    // if ($this->true_cahce_failure ) {
    $this->url= $this->adjust_url_with_www_add($this->url);
    // $this->counter=2;
    // }

    $this->cache_debug("Date".$date1." ".$this->url,"Recursion ".$this->counter);
    $date1 = $this->get_date();
    $this->counter++;
}
$this->cache_debug("Date: ".$date1." ".$this->url,"Loop Done ");

基本的に、ループは が より大きくなるか、小さくなるまで継続する必要$dateがありnot 0ます。持っていることもあれば、持っていないこともあります。そうでない場合は while 評価に戻り、反復を停止します。しかしそうはならず、繰り返しが続きます。counter5date10

カウンターが 5 に達したときにのみ停止します。それはなぜですか?

4

2 に答える 2

3

&&の代わりにあなたの状態で使いたいと思います||

あなたが書いた方法は、どちらかの条件が true の場合に続行するため、両方が false の場合にのみ停止します。

編集:あなたの質問をもっとよく読んだ後、使用する必要があると思います

while (0 == $date1 && $this->counter < 5 ) {
于 2012-11-12T13:32:30.700 に答える
2

あなたの$this->counteris still < 5when $date1is notであるため、停止していない可能性があり0ます。これらのステートメントをtrue/false値で見ると、while条件は次のようになります。

while( false || true )

while$this->counter< 5の任意の値であり$date、実行を継続します。

あなたはおそらくそれをに切り替えたいと思うでしょう

while( 0==$date1 && $this->counter<5 )

を使用するのは、1 つだけでなく&&両方の条件を にしたいからですtrue。また、日付を比較するときに!=を切り替えるので、0 以外の日付がある場合にも停止します。==0

于 2012-11-12T13:33:22.243 に答える