Что означает данная конструкция?
$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 написал(а):
тернарный оператор называется (или тернарная условная операция)
Спустя 2 минуты, 34 секунды (20.07.2010 - 12:32) Ice написал(а):
можно еще и вот так написать:
По аналогии or die(), короче говоря. Правда так редко кто пишет.
Способ, так сказать обхода пресловутого тернарника, который некоторыми программистами уж очень тяжело читается, уж очень они его не любят.
То есть, что вот так:
что так:
или так:
Результат тот же.
$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;
Результат тот же.
Спустя 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 написал(а):
А я вот не думал насчет такой фигни
Joker - я считаю, что у тебя есть логическая ошибка. Ты присваиваешь либо строку, либо null. А по-моему мнению, надо всегда назначать в явном виде один и тот же тип данных.
Например, так:
На выходе имеем более логичные данные:
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- но получается, что ПРАВИЛЬНОМ выборе типов присваиваемых данных разница между конструкциями нету?
Спустя 1 минута, 28 секунд (20.07.2010 - 13:24) Joker написал(а):
Цитата (sergeiss @ 20.07.2010 - 15:22) |
что ПРАВИЛЬНОМ выборе типов присваиваемых данных разница между конструкциями нету? |
получаеться да) но при не правильных то есть!) и это нужно знать!!!)
Спустя 18 минут, 11 секунд (20.07.2010 - 13:42) twin написал(а):
Если уж пользоваться такими некошерными вещами,
то лучше собачку:
Переменная $text что так, что так определена не будет, зато нет риска получить нотис.
А тернарный оператор тут.
$text = $_POST['text'] or '';
то лучше собачку:
$text = @$_POST['text'];
Переменная $text что так, что так определена не будет, зато нет риска получить нотис.
А тернарный оператор тут.
Спустя 5 минут, 52 секунды (20.07.2010 - 13:48) Rand написал(а):
Про ноль забыли ($_POST['text']='0').
$_POST['text'] - вернет истину, а !empty - ложь
Т.е. в данном случае, разница всё-таки есть.
$_POST['text'] - вернет истину, а !empty - ложь
$_POST['text']='0';
$text = $_POST['text'] or '';
var_dump($text); echo "<br>";
$text = ! empty($_POST['text']) ? $_POST['text'] : '';
var_dump($text);
Т.е. в данном случае, разница всё-таки есть.