Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Скриптовые языки программирования > PHP
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 26.04.2011, 01:23   #1
VVkSoft
Пользователь
 
Аватар для VVkSoft
 
Регистрация: 06.09.2009
Сообщений: 66
Печаль не могу разобрать условие для If в PHP

не могу понять почему в PHP выражение в линейке 5 дает истинное значение, это просто операция присвоения
розясните подробно как работает проверка условия

PHP код:
<?php
$a 
3;
$b 4;
echo 
$b $a;//ето понятно
if ($a $b){//почему истина
    
echo "Who?";
}
?>
VVkSoft вне форума Ответить с цитированием
Старый 26.04.2011, 02:31   #2
KREGI
Форумчанин
 
Аватар для KREGI
 
Регистрация: 29.11.2008
Сообщений: 333
По умолчанию

потому что вы присваиваете значение, а не сравниваете, двойное равенство нужно ==
PHP код:
<?php
$a 
3;
$b 4;
echo 
$b $a;
if (
$a == $b){
    echo 
"Who?";
}
?>
Если помог - Весы слева
KREGI вне форума Ответить с цитированием
Старый 26.04.2011, 06:24   #3
Minus_yu
Чатланин!
Форумчанин
 
Аватар для Minus_yu
 
Регистрация: 20.11.2010
Сообщений: 140
По умолчанию

а с чего тут быть "false", если вы по сути проверяете на истинность кагбэ саму возможность присвоения
другими словами, PHP считает так: если я могу переменной $a присвоить значение переменной $b, то все нормально. А уж выполнить это присвоение и, соответственно, получить "true" при проверке if, php никто не мешает!
Minus_yu вне форума Ответить с цитированием
Старый 26.04.2011, 08:11   #4
mv28jam
Старожил
 
Аватар для mv28jam
 
Регистрация: 09.09.2008
Сообщений: 2,624
По умолчанию

Цитата:
а с чего тут быть "false", если вы по сути проверяете на истинность кагбэ саму возможность присвоения
другими словами, PHP считает так: если я могу переменной $a присвоить значение переменной $b, то все нормально. А уж выполнить это присвоение и, соответственно, получить "true" при проверке if, php никто не мешает!
Совсем не так.
PHP сначала выполняет операцию присвоения, а потом уже сравнения.
PHP код:
$a 3
$b 4
if (
$a $b){//if(4)==true
    
echo "Who?"
}

$a 3
$b 0
if (
$a $b){//if(0)==false
    
echo "Who?"

Стрелок-охотник
mv28jam вне форума Ответить с цитированием
Старый 26.04.2011, 12:52   #5
VVkSoft
Пользователь
 
Аватар для VVkSoft
 
Регистрация: 06.09.2009
Сообщений: 66
По умолчанию

Я так понимаю если результат присвоения (или иной операции) является больший нуля то значеть значение истинное, а если ноль то значение не истинное Может такое быть?
VVkSoft вне форума Ответить с цитированием
Старый 26.04.2011, 12:57   #6
Johnatan
Antimoderаtoris
Участник клуба
 
Регистрация: 08.02.2008
Сообщений: 1,251
По умолчанию

Правильно. Может.
98% из тысячи моих постов сделаны в профильном подфоруме. Я не накручиваю свои посты болтанием в "курилке", а ты?
Johnatan вне форума Ответить с цитированием
Старый 26.04.2011, 22:03   #7
VVkSoft
Пользователь
 
Аватар для VVkSoft
 
Регистрация: 06.09.2009
Сообщений: 66
Радость

спасибо всем за ответы.
VVkSoft вне форума Ответить с цитированием
Старый 26.04.2011, 22:37   #8
Minus_yu
Чатланин!
Форумчанин
 
Аватар для Minus_yu
 
Регистрация: 20.11.2010
Сообщений: 140
По умолчанию

Цитата:
Сообщение от mv28jam Посмотреть сообщение
Совсем не так.
PHP сначала выполняет операцию присвоения, а потом уже сравнения.
где в этом коде (он из первого поста топика)
PHP код:
<?php
$a 
3;
$b 4;
echo 
$b $a;//ето понятно
if ($a $b){//почему истина
    
echo "Who?";
}
?>
сравнение?
Minus_yu вне форума Ответить с цитированием
Старый 27.04.2011, 10:09   #9
mv28jam
Старожил
 
Аватар для mv28jam
 
Регистрация: 09.09.2008
Сообщений: 2,624
По умолчанию

Вот сравнение
PHP код:
if ($a $b
Если непонятно поясняю после присвоения переменной $a значения $b, будет
if ($a) - это и есть сравнение.
Стрелок-охотник
mv28jam вне форума Ответить с цитированием
Старый 29.04.2011, 08:42   #10
mr.allty
Пользователь
 
Регистрация: 22.03.2011
Сообщений: 23
По умолчанию

в конструкции if(expr), php неявно преобразует expr в булев тип.

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

Сам булев FALSE
целое 0 (ноль)
число с плавающей точкой 0.0 (ноль)
пустая строка и строка "0"
пустой массив
объект без атрибутов (только в PHP 4)
специальный тип NULL (включая неустановленные переменные)

Все остальные значения рассматриваются как TRUE (включая любой ресурс).

/**Примечание: информация взята из официального мануала
"Сильный" программист
mr.allty вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Не могу задать корректно условие While sergey113 Помощь студентам 1 10.03.2011 16:23
Код CSS не могу разобрать... misher HTML и CSS 13 26.12.2010 21:42
Не могу написать условие в php vinok82 PHP 2 28.05.2010 12:24
не могу прописать php для апачи Gokusa PHP 9 28.01.2010 10:54
Не могу разобрать с матрицами svetlana891 Помощь студентам 4 18.06.2009 10:56