Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум (новые сообщения вниз) Структурный форум

тема: в чем отличие: if (empty($var)), if ($var=='')) и if (!$var)?

Сообщения:  [1-8] 

 
 автор: Евгений Петров   (29.10.2005 в 21:36)   письмо автору
 
   для: isset   (29.10.2005 в 21:29)
 

Ой я прогнал. Я думал функция не mysql_num_rows а mysql_fetch_row.

Тогда лучше проверять на ноль, т.е.
<?
  
if(mysql_num_rows($query) == 0)
  {
    
// ...
  
}
?>

   
 
 автор: isset   (29.10.2005 в 21:29)   письмо автору
 
   для: Евгений Петров   (29.10.2005 в 21:24)
 

mysql_num_rows возвратит false или число

   
 
 автор: Евгений Петров   (29.10.2005 в 21:24)   письмо автору
 
   для: codexomega   (29.10.2005 в 21:15)
 

Если запрос правильный, то по умолчанию результат дает true.
Поправлю вас она возвратит не true а массив.

   
 
 автор: Евгений Петров   (29.10.2005 в 21:22)   письмо автору
 
   для: irr   (29.10.2005 в 21:09)
 

В данном случае это не принципиально, но я бы использовал empty или !. Хотя можно и второй вариант т.к. эта функция в случае удачи возвратит ассоциативный массив, т.е. это уже не будет пустой строкой, а вслучае неудачи возвратит false или 0 или если привести к строке - то пустая строка.

P.S. Вобще эта ф-я возвратит false в чем вы легко убедитесь если проверите так:
<?
  
if($var === 0
    echo 
"Нету";
  else
    echo 
"Есть";
?>

Здесь используется строгое сравнение.

   
 
 автор: codexomega   (29.10.2005 в 21:15)   письмо автору
 
   для: irr   (29.10.2005 в 21:09)
 

В этом случае лучше использовать логический оператор "не" !.
Если запрос правильный, то по умолчанию результат дает true.
Если нет - то false.
Если не правда - if(!true), значит ложь - false.

Если ваша переменная содержит строку, проверяте ее на пустую строку.
Если число, то на на 0.
Если проверяете была ли выделенна память переменной, например при отправки формы(POST), используйте if(empty($var)).
Логический оператор ! применим в других случаях, или везде, по необходимости.
Это придет, с практикой.

   
 
 автор: irr   (29.10.2005 в 21:09)   письмо автору
 
   для: Евгений Петров   (29.10.2005 в 19:38)
 

спасибо за ответ! так все-таки, что получается, в моих примерах нет разницы?

вот например, мне нужно узнать, будет ли пустым запрос в БД или нет.
 <?php
$query
="SELECT name FROM table";
$result=mysql_query($query);
$var=mysql_num_rows($result);
// что лучше использовать?
if (empty($var)) // или if ($var=='')), или if (!$var)? 
// ...... }
?> 

   
 
 автор: Евгений Петров   (29.10.2005 в 19:38)   письмо автору
 
   для: irr   (29.10.2005 в 19:23)
 

1) Это значит что для переменной была выделена память.
2) 3) Разница впринципе есть, только в php она плохо проявляется (но проявляется) из за того что нет привязки к конкретному типу. Интерпретатор сам находит более подходящий тип для переменной (хотя тип можно установить при помощи ф-ии typeof кажется) и производит автоматическое преобразование в зависимости от конкретной операции, т.е. если опреация производится как со строкой (например strlen($var)), то переменная var будет рассматриваться как пустая строка, а если как в вашем случае это логические операции, то переменная будет рассматриваться как типа bool, а вот например в C/С++ это разные вещи которые могут быть присвоены переменным разного типа (например для 0 - int, а для false - bool).

   
 
 автор: irr   (29.10.2005 в 19:23)   письмо автору
 
 

в чем отличие:
if (empty($var)), if ($var=='')) и if (!$var)?

этот вопрос я задавал в теме:
http://www.softtime.ru/forum/read.php?id_forum=1&id_theme=8808&page=3

мне ответил codexomega:

Первое проверяет была ли переменная инициализирована.
Второе проверят значение переменной, равняется ли оно пустой строке.
Третье возвращает boolean (true или false). T.e проверят обратное, перевернутое значение переменной.

но к сожалению этот ответ вызвал у меня еще больше вопросов, а тема к этому времени уже затерялась в форуме, и дискуссия прервалась.

хотелось бы узнать вот что:

1) что значит "переменная инициализирована"? т.е. ей присвоено какое-то значение, будь то строка, число или boolean?

2) есть ли разница между пустой строкой, 0 и false?
<?php 
$var
=false// или $var=0; 
if ($var=='') { echo "истина"; } else { echo "ложь"; } 
?>

этот пример в обоих случаях выводит "истина", хотя $var не равно именно *пустой строке*! она равна false в первом случае, и 0 во втором.
тогда в чем отличие между if (empty($var)) и if ($var==''))?

3) то же самое будет если:
<?php 
$var
=false// или $var=0; или $var=''; 
if (!$var) { echo "истина"; } else { echo "ложь"; } 
?>

во всех 3-х случаях выведется "истина".
тогда в чем отличие между if ($var=='')) и if (!$var))?

   

Сообщения:  [1-8] 

Форум разработан IT-студией SoftTime
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования