[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Забираем логин из массива $_POST
7ion
Здравствуйте!
Объясните ламеру и идиоту этот код:
$login = !empty($_POST['login'])?$_POST['login']:null;

всегда забирал переменные из массива $_POST тупо так: $var = $_POST['var'], но в чужой работе повстречал это.
Немного кумеканья мозгами и я понял, что если переменная существует, тогда она присваевается, а если нет, то она остается пустой. А смысл, память-то занимать она все равно будет?
А дальше - я не понял. Для начала - что значит вопросительный знак. Что-то мне подсказывает, что это после него идет либо то, что делается если переменной несуществует, либо...
Потом что? Ведь переменную из пост-массива нельзя изменить или обнулить, что ж тут тогда происходит? Да и двоеточие что-то не совсем понятно.
Заранее спасибо за тырканье носом в FAQ =)



Спустя 27 минут, 6 секунд (7.11.2009 - 22:30) sergeiss написал(а):
Данная конструкция будет более правильной так:

$login = isset($_POST['login']) ? $_POST['login'] : null;


и "расшифровывется" так: если установлена переменная (в данном случае есть определенный элемента в массиве), то вернуть эту переменную и присвоить переменной $login; иначе - установить величину $login в null.

Эта конструкция "пришла" из языка Си.
переменная = условие ? взять_если_условие_верно : взять_если_условие_не_верно;

Спустя 8 минут, 2 секунды (7.11.2009 - 22:38) 7ion написал(а):
Спасибо большое за объяснение!
А собственно, какая разница (кроме того, что наверное это будет грамотнее) между простым присвоением переменной из пост-массива и с этим условием? Ведь если ее не будет, переменной этой, то тогда и так присвоится пустота переменной, что и символизирует null.

Спустя 48 минут, 55 секунд (7.11.2009 - 23:27) sergeiss написал(а):
Если переменной нету в массиве ПОСТ, то тогда ошибка будет (если не выключен показ предупреждений и ошибок). Поэтому такое присвоение (как я показал) - наиболее правильное.

Спустя 1 час, 3 минуты, 50 секунд (8.11.2009 - 00:31) 7ion написал(а):
Спасибо большое, буду использовать это =)

Спустя 46 минут, 28 секунд (8.11.2009 - 01:17) haZe написал(а):
А что быстрее работает конструкция ?: или if?

Спустя 23 минуты, 53 секунды (8.11.2009 - 01:41) glock18 написал(а):
бессмысленный вопрос

как и сравнение скорости echo $i . 'str' и echo "{$i}str";

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

Спустя 42 минуты, 58 секунд (8.11.2009 - 02:24) sergeiss написал(а):
Цитата (haZe @ 8.11.2009 - 02:17)
А что быстрее работает конструкция ?: или if?

Цитата (glock18 @ 8.11.2009 - 02:41)
бессмысленный вопрос


Ну почему же... Быстрее работает ?:, вот только разница настолько небольшая, что ее не имеет смысла учитывать smile.gif

На форуме по С++ однажды подсчитывали количество операций процессора, при обработке этими конструкциями целых чисел. Получили, что ?: занимает то ли на 1 такт процессора меньше, то ли на 2 smile.gif При общем количестве тактов меньше 10 (7-8, вроде бы).
Я думаю, что каждый сам подсчитает, сколько это займет времени (какая будет разница), если процессор выполняет хотя бы пару миллионов тактов в секунду wink.gif

Спустя 13 минут, 6 секунд (8.11.2009 - 02:37) glock18 написал(а):
sergeiss
этого не понимают, если такие вопросы задают всерьез. А послушав тебя, дак и не поймут, думаю. Только решат, что "да, :? быстрее".

Спустя 17 минут, 12 секунд (8.11.2009 - 02:54) SunSet написал(а):
glock18
Та нет, не решат. Кто писал через иф - тот точно так же и будет продолжать.

Спустя 38 минут, 56 секунд (8.11.2009 - 03:33) sergeiss написал(а):
glock18 - "имеющий уши да услышит". А кто не поймет, так и ладно. Хотя бы знать будет человек про эту конструкцию, да использовать ее будет. Так ведь и за умного сойдет smile.gif

Спустя 2 часа, 5 минут, 47 секунд (8.11.2009 - 05:39) Gabriel написал(а):
sergeiss
на меня намикаеш? laugh.gif

Спустя 30 минут, 26 секунд (8.11.2009 - 06:09) SunSet написал(а):
sergeiss
Только ленивый и слепой не встречал эту конструкцию тут на форуме)) Ею твин уже везде обжужжал)) smile.gif
Быстрый ответ:

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