О мнеDashed CMS RSS
Курагирование от бороды
 
 
 /Root/Статьи/

Тернарный оператор "? : "

20.10.2011 21:04:08

Это первая статья про ПХП программирование на этом сайте поэтому не пинайте за тему.

Сегодня я напишу про тернарный оператор "? :" доступный в Си подобных языках к коим относятся PHP и JavaScript.

Так что же такое тернарный оператор?

Это упрощенный if{}else{} для использования в строках. При его использовании "if" не пишется, сразу ставится сравнение, а вместо первой скобки "{" ставится знак вопроса "?", конструкция "}else{" заменяется двоеточием ":".

Сейчас я приведу примеры где это можно использовать...

Ну например для получения $_POST или $_GET переменной выглядеть это будет так:

$do = isset($_GET['do']) ? $_GET['do'] : ' ';

заменяет строку вида

if (isset($_GET['do'])){$do = $_GET['do'] }else{$do = ' ';}

Правда ведь на много проще ?!

Такая конструция при копировании и вставке для другой переменной снижает количество правки на одно значение.

Вот еще более сложный пример: представьте что вы делаете многоязычный сайт и не хотите плодить множество шаблонов, для этого вам надо выводить слова разных языков через ПХП

<?= $lang == 'en' ? 'Английский' : ($lang == 'kz' ? 'Казахский' : 'По умолчанию'); ?>

Такая конструкция заменяет:

<?

switch($lang){

case "en": echo "Английский"; break;

case "kz": echo "Казахский"; break;

default:echo "По умолчанию"; break;

}

?>

Разумеется так намного меньше кода будет, но думаю мне стоит заметить что использование нескольких тернарных операторов подряд чревато плохой читабельностью кода, поэтому лучше не злоупотреблять, строго говоря по собственному мнению во втором примере я уже злоупотребил ими :) а если бы языков было бы больше то и подавно, но по моему так лучше чем switch(){case:break;} использовать!



Какой стиль кода использовать вам решать, но знать лучше все вариации использования!

Удачи!

Рейтинг $r-- [1] $r++

Показать коментарии (vkontakte.ru)
}