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

Форум PHP

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

 

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

вид форума:
Линейный форум Структурный форум

тема: Подскажите как правильно
 
 автор: Tamplier   (05.07.2010 в 21:18)   письмо автору
 
 

Подскажите ламеру как наиболее правильно сделать.
Вот есть выборка из БД и соответственно если значение определенного поля пустое оно не выводится, как правильно проверить, так:

if($info['text'])

или так

if(!empty($info['text']))

  Ответить  
 
 автор: Slo_Nik   (05.07.2010 в 22:01)   письмо автору
 
   для: Tamplier   (05.07.2010 в 21:18)
 

второй вариант

  Ответить  
 
 автор: sim5   (05.07.2010 в 22:52)   письмо автору
 
   для: Slo_Nik   (05.07.2010 в 22:01)
 

Почему?

  Ответить  
 
 автор: Slo_Nik   (05.07.2010 в 23:54)   письмо автору
 
   для: sim5   (05.07.2010 в 22:52)
 

действительно, запарился немного...
if(empty($info['text'])){

}

  Ответить  
 
 автор: sl1p   (06.07.2010 в 00:25)   письмо автору
 
   для: Slo_Nik   (05.07.2010 в 23:54)
 

смотря чего ожидаете от переменной.. если там строка и вас интересует что $info['text'] != "", тогда
if(strval($info['text']) != '') {

}


empty не сработает если в переменной "0", например.

  Ответить  
 
 автор: Slo_Nik   (06.07.2010 в 00:53)   письмо автору
 
   для: sl1p   (06.07.2010 в 00:25)
 

этот момент Tamplier не уточнил

  Ответить  
 
 автор: sl1p   (06.07.2010 в 01:12)   письмо автору
 
   для: Slo_Nik   (06.07.2010 в 00:53)
 

> значение определенного поля пустое.
0 это не пустое:)

  Ответить  
 
 автор: neadekvat   (06.07.2010 в 01:23)   письмо автору
 
   для: sl1p   (06.07.2010 в 00:25)
 

А чем вам
if ($var != '')
не понравилось?
К тому же, включите логику (отталкиваюсь от имени индекса). Если текст состоит только из нуля - нафиг его выовдить? А значит !empty вполне подойдет.

  Ответить  
 
 автор: sl1p   (06.07.2010 в 01:36)   письмо автору
 
   для: neadekvat   (06.07.2010 в 01:23)
 

опечаталсо, вернее будет так:
if(strval($info['text']) !== '')
т.к.
$var != ''
один хрен с empty();

if ($var)
if(!empty($var))
if($var != '')

одно и то же, за исключением того что empty() проверит наличие такой переменной.


А насчёт выводить 0, то это вы уже вылазите за рамки :)
0 в переменной афтара это же текст? Текст. Значит выводить.

  Ответить  
 
 автор: neadekvat   (06.07.2010 в 01:41)   письмо автору
 
   для: sl1p   (06.07.2010 в 01:36)
 

Так можно
if ($var !== '')
Без всяких там приведений к строке и т.д.

  Ответить  
 
 автор: sl1p   (06.07.2010 в 01:44)   письмо автору
 
   для: neadekvat   (06.07.2010 в 01:41)
 

ну можно, мало ли чё там автор с переменной делал :)
может он её в int перевел :D

  Ответить  
 
 автор: neadekvat   (06.07.2010 в 01:52)   письмо автору
 
   для: sl1p   (06.07.2010 в 01:44)
 

Ну так попробуйте конструкцию
if (strval(0) != '')
и
if (0 !== '')
Результат то как бы тот же..должен быть.
Только в первом случаи еще функцию пришлось вызывать, а во втором просто сравнить "с пристрастием"

  Ответить  
 
 автор: neadekvat   (06.07.2010 в 01:22)   письмо автору
 
   для: Slo_Nik   (05.07.2010 в 23:54)
 

Первый вариант был ближе к истине.
if ($var)
и
if (empty($var))
возвращают противоположные результаты.

  Ответить  
 
 автор: neadekvat   (06.07.2010 в 01:26)   письмо автору
 
   для: sim5   (05.07.2010 в 22:52)
 

По-моему, потому что при варианте
if ($var)
подставляется значение переменной и собстно оттуда уже происходит истина или ложь
Во втором же варианте использована функция, предназначенная именно для того, чтобы проверить значение переменной.

  Ответить  
 
 автор: sim5   (06.07.2010 в 03:38)   письмо автору
 
   для: neadekvat   (06.07.2010 в 01:26)
 

Вот и надо объяснять, что и по чем.

  Ответить  
 
 автор: Tamplier   (06.07.2010 в 10:04)   письмо автору
 
   для: sim5   (06.07.2010 в 03:38)
 

Вот я и говорю, вопрос вроде простой, а как правильно делается, одному Аллаху ведомо....
Переменная $info['text'] может выводить любую строку, но не ноль.
Можно сделать несколькими вариантами и все они будут работать, но как все таки правильно?


<?php
if ($info['text']) {  }

if (!empty(
$info['text'])) {  }

if (
$info['text'] != '') {  }
?>

  Ответить  
 
 автор: sl1p   (06.07.2010 в 11:07)   письмо автору
 
   для: Tamplier   (06.07.2010 в 10:04)
 

любой вариант.

но скорее самый короткий тут будет
if ($info['text']) { }
т.к. переменная существует и не нужно проверять это.

  Ответить  
 
 автор: neadekvat   (06.07.2010 в 11:42)   письмо автору
 
   для: sl1p   (06.07.2010 в 11:07)
 

Но, как я уже сказал, результат хоть и будет верный, но получен будет через задницу. Вам нужны данные, полученные через задницу? :)

  Ответить  
 
 автор: sl1p   (06.07.2010 в 16:03)   письмо автору
 
   для: neadekvat   (06.07.2010 в 11:42)
 

никакой не через задницу)
всё кк)

  Ответить  
Rambler's Top100
вверх

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