[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Что означает данная конструкция
Userguest
Здравствуйте.

Что означает данная конструкция?

$text = !empty($_POST['text'])?$_POST['text']:NULL;




Спустя 2 минуты, 8 секунд (20.07.2010 - 12:25) Joker написал(а):
если $_POST['text'] не пустое то присвоить переменной $text значение $_POST['text'] а если путое то присвоить переменной $text значение null

Спустя 1 минута, 22 секунды (20.07.2010 - 12:27) Joker написал(а):
кароче тоже самое что и

if (!empty($_POST['text']))
$text = $_POST['text'];
else
$text = null;

Спустя 2 минуты, 20 секунд (20.07.2010 - 12:29) Rand написал(а):
тернарный оператор называется (или тернарная условная операция) wink.gif

Спустя 2 минуты, 34 секунды (20.07.2010 - 12:32) Ice написал(а):
можно еще и вот так написать:

$text = $_POST['text'] or null;

По аналогии or die(), короче говоря. Правда так редко кто пишет.
Способ, так сказать обхода пресловутого тернарника, который некоторыми программистами уж очень тяжело читается, уж очень они его не любят.

То есть, что вот так:

if ( ! empty( $_POST['text'] ) )
$text = $_POST['text'];
else
$text = null;

что так:

$text = ! empty($_POST['text']) ? $_POST['text'] : NULL;

или так:

$text = $_POST['text'] or null;

Результат тот же. smile.gif

Спустя 16 минут, 44 секунды (20.07.2010 - 12:48) Joker написал(а):
Цитата (Ice @ 20.07.2010 - 14:32)
Результат тот же.

и не один и тот же не надо людей с толку сбивать.

Спустя 35 секунд (20.07.2010 - 12:49) Ice написал(а):
Ну, да, уместно.
ПС. Домой приеду - проверю.

Спустя 7 минут, 25 секунд (20.07.2010 - 12:56) Joker написал(а):

$_POST['text'] = '';
if ( ! empty( $_POST['text'] ) )
$text = $_POST['text'];
else
$text = null;
var_dump($text); echo '<br />';
$text = $_POST['text'] or null;
var_dump($text); echo '<br />';
$text = ! empty($_POST['text']) ? $_POST['text'] : null;
var_dump($text); echo '<br />';

Цитата
NULL
string(0) ""
NULL

Спустя 15 минут, 8 секунд (20.07.2010 - 13:11) sergeiss написал(а):
А я вот не думал насчет такой фигни smile.gif

Joker - я считаю, что у тебя есть логическая ошибка. Ты присваиваешь либо строку, либо null. А по-моему мнению, надо всегда назначать в явном виде один и тот же тип данных.
Например, так:
$_POST['text']='';

if ( ! empty( $_POST['text'] ) )
$text = $_POST['text'];
else
$text = '';
var_dump($text); echo '<br />';
$text = $_POST['text'] or '';
var_dump($text); echo '<br />';
$text = ! empty($_POST['text']) ? $_POST['text'] : '';
var_dump($text); echo '<br />';

На выходе имеем более логичные данные:
string(0) "" 
string(0) ""
string(0) ""



Спустя 7 минут, 10 секунд (20.07.2010 - 13:19) Joker написал(а):
Цитата (sergeiss @ 20.07.2010 - 15:11)
Joker - я считаю, что у тебя есть логическая ошибка.

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

Спустя 3 минуты, 40 секунд (20.07.2010 - 13:22) sergeiss написал(а):
Joker- но получается, что ПРАВИЛЬНОМ выборе типов присваиваемых данных разница между конструкциями нету? wink.gif

Спустя 1 минута, 28 секунд (20.07.2010 - 13:24) Joker написал(а):
Цитата (sergeiss @ 20.07.2010 - 15:22)
что ПРАВИЛЬНОМ выборе типов присваиваемых данных разница между конструкциями нету?

получаеться да) но при не правильных то есть!) и это нужно знать!!!)

Спустя 18 минут, 11 секунд (20.07.2010 - 13:42) twin написал(а):
Если уж пользоваться такими некошерными вещами,
$text = $_POST['text'] or '';

то лучше собачку:
$text = @$_POST['text'];

Переменная $text что так, что так определена не будет, зато нет риска получить нотис.

А тернарный оператор тут.

Спустя 5 минут, 52 секунды (20.07.2010 - 13:48) Rand написал(а):
Про ноль забыли ($_POST['text']='0').
$_POST['text'] - вернет истину, а !empty - ложь
$_POST['text']='0';
$text = $_POST['text'] or '';
var_dump($text); echo "<br>";
$text = ! empty($_POST['text']) ? $_POST['text'] : '';
var_dump($text);

Т.е. в данном случае, разница всё-таки есть.
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.