While döngüsü karşılaştırıldığında PHP gevşek yazarak

2 Cevap php

Aşağıdaki kod parçası göz önüne alındığında:

  $i= 11;
  function get_num() {
    global $i;
    return (--$i >= 0) ? $i : false;
  }
  while($num = get_num()) {
    echo "Number: $num\n";
  }

Aşağıdaki çıkışı Sonuçları:

Number: 10
Number: 9
Number: 8
Number: 7
Number: 6
Number: 5
Number: 4
Number: 3
Number: 2
Number: 1

Ancak, ben de çıktı Number: 0 bunu istiyorum - ama while döngüsü değerlendirir 0 false olarak, böylece döngü bu noktaya geçmez. Nasıl döngü tek bir açık üzerinde sonlandırmak için alabilirim false?

2 Cevap

while( ($num = get_num()) !== false ) {

İlave = güçleri tip çek de.

Bir comparison that compares the types yapmak zorunda ve değerleri değil, sadece - === veya !== operatörlerini kullanarak anlamına gelir, yerine == ya da !=.

Yani, sizin gibi bir şey kullanabilirsiniz:

while(($num = get_num()) !== false) {
    echo "Number: $num\n";
}

Bu grubu, 0 false ile aynı şey olarak kabul edilmeyecektir.


As reference : Comparison Operators (quoting)

$a == $b : Equal : TRUE if $a is equal to $b.
$a === $b : Identical : TRUE if $a is equal to $b, and they are of the same type.