2013-12-18 4 views
-4
<?php 
$headCount = 0; 
while ($headCount < 3) { 
    $flip = rand(0,1); 
    if ($flip){ 
     $headCount ++; 
     echo "<div class=\"coin\">H</div>"; 
    } 
    else { 
     $headCount = 0; 
     echo "<div class=\"coin\">T</div>"; 
    } 
} 
?> 

Привет ребята я понимаю код, кроме части в строке 5 if ($flip){ почему это, что нет необходимости определять состояние должным образом, например, как if($flip==1), и мы можем просто написать if($flip)?PHP: Код помощи Интерпретация

Другой вопрос, у меня есть следующий:

//We will keep flipping a coin as long as the result is heads! 
do { 
    $flip = rand(0,1); 
    if ($flip){ 
     echo $flip; 
     echo "<div class=\"coin\">H</div>"; 
    } 
    else { 
     echo $flip; 
     echo "<div class=\"coin\">T</div>"; 
    } 
} while ($flip); 

я не понимаю последнюю строку «} в то время как ($ флип)», может кто-нибудь объяснить мне это? Я понимаю все заявление о реализации кода до тех пор, пока значение $ flip не будет истинным. однако почему он останавливает повторение кода, когда он показывает «Т»?

Спасибо за ответ! учился через codeacademy.com, когда я сталкивался с этим вопросом.

+0

Это потому, что код проверяет только значения не фальсификации, такие как нуль, пустые строки и т. Д. –

+0

'0 = false' и' 1 = true' – Parixit

+0

@ 웃 웃웃 웃웃 Он не проверяет наличие простого булева. Он проверяет только значение, отличное от '0' или' '' '. $ flip может иметь значение «0», ставка все равно выйдет «false». – Peon

ответ

3

Операция if выглядит следующим образом: if (expression).

Выражение не должно быть логическим, это просто то, что может быть преобразовано в одно.

Руководство пользователя PHP имеет следующие правила: converting to booleans.

В этом случае вы генерируете целые числа. Так что если это 0, то это FALSE, в противном случае это TRUE.

1

The $flip = rand(0,1); собирается дать Вам либо или , так что значение будет назначен $flip.

Теперь у вас есть это. if($flip) здесь, 1 считается истинным, а 0 - ложным. Поэтому в зависимости от значения $flip будет выполнен оператор if.

Для того, чтобы понять ... if(1) это правда и if(0) является ложным

1

Каждое значение может неявно преобразуется в логическое true или false значение. $foo == true - это то же самое, что и $foo - это то же самое, что и $foo == true == true. $foo == true принуждает любое значение $foo во что-то сопоставимое с true, что равносильно простому принуждению $foo, без необходимости сравнивать его с логическим значением. См. http://www.php.net/manual/en/types.comparisons.php для исчерпывающих таблиц правил сравнения.

+1

Для OP в этом контексте «принуждение» означает преобразование типа. Таким образом, у нас есть целое число, и изменение его на логическое требует, чтобы PHP выполнял определенные правила: 1 = true, 0 = false. Строки также имеют свои собственные правила (но не применяются здесь). – halfer

0

От php.net: (http://www.php.net/manual/en/language.types.boolean.php)

При преобразовании в булево значение, следующие значения считаются FALSE:

логическое значение FALSE сама

целое число 0 (ноль) поплавок 0.0 (ноль)

пустая строка, а строка "0"

массив с нулевыми элементами

объект с нулевыми переменными-членами (PHP 4 только)

специальный тип NULL (включая неустановленные переменные)

SimpleXml объекты, созданные из пустых тегов

Каждое другое значение считается TRUE (включая любой ресурс).

Смежные вопросы