|
|
|
| Не могу разобраться почему $result не равна false в первом условии и тут же равна false во втором:
function diff($one, $two = false)
{
$result = $one + 105;
if ($result === false)
echo "результ равен фолсу по непонятным причинам <br>";
else
echo "результ пока не равен фолсу<br>";
if($result === false || $two)
echo "результ равно второй переменной ".$result." = ".$two."<br> или же уже равен фолсу! Почему? ";
else
echo "результ не равно второй или первой переменной";
}
diff(15 , 10);
|
| |
|
|
|
|
автор: ..... (18.08.2010 в 23:20) |
|
|
для: starpom
(18.08.2010 в 23:01)
| | diff(5); | |
|
|
|
|
|
|
|
для: .....
(18.08.2010 в 23:20)
| | Спасибо, если при отсутствии второго аргумента в функции, во второе условие попадет дефолтный false, то условие не срабатывает, так как $result фолсу вроде не равна (я так понимаю),
НО с каких делов условие срабатывает, если туда попадает переменная, значению которой $result тоже не равна. Вот это я не понимаю. Если бы троекратное равно (===) сравнивало исключительно типы данных, то было бы ясно , а так ????? | |
|
|
|
|
|
|
|
для: starpom
(19.08.2010 в 00:02)
| |
НО с каких делов условие срабатывает, если туда попадает переменная, значению которой $result тоже не равна.
|
Это вы про переменную two?
Условие будет TRUE если переменная two<>0 | |
|
|
|
|
|
|
|
для: Gubichev
(19.08.2010 в 00:13)
| | Да , я про это.
Условие будет TRUE если переменная two<>0
Я так понимаю, что если первый элемент для сравнения - булев тип (false), то и второй "преобразуеться" в такой же, и если $result <>0, тоесть true, и с $two та же ситуация, то условие
работает? | |
|
|
|
|
|
|
|
для: starpom
(19.08.2010 в 00:27)
| | Да ничего там не преобразуется. Не понятно почему во втором условном операторе TRUE?
Объясняю.
$result === false и должна быть ЛОЖЬ, НО у нас же есть второй элемент со значением отличным от нуля, а значит $two - ИСТИНА.
if(ЛОЖЬ || ИСТИНА) = ИСТИНА | |
|
|
|
|
|
|
|
для: Gubichev
(19.08.2010 в 00:39)
| | Ну я это и имел ввиду, если первый булев тип , то и второй будет восприниматься как таковой, а значения переменных уже не в расчет? Хотя вроде как используем строгое сравнение , в котором я думал наивный раньше , должно быть равенство и по типу данных и по значению? | |
|
|
|
|
|
|
|
для: starpom
(19.08.2010 в 01:04)
| |
$result === false || $two
|
||||||||||||||||||
( $result === false ) || $two
|
| |
|
|
|
|
|
|
|
для: Trianon
(19.08.2010 в 11:00)
| | Кажись разобрался, спасобо всем, кто поучаствовал. | |
|
|
|