Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Тернарный оператор

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Без описания
dimaua2
Отправлено: 09 Июля, 2012 - 04:20:02
Post Id



Посетитель


Покинул форум
Сообщений всего: 434
Дата рег-ции: Янв. 2012  


Помог: 0 раз(а)




PHP:
скопировать код в буфер обмена
  1. <?PHP
  2. $a =2;
  3. echo($a==2)
  4. ? "2"
  5. : "22";
  6. ?>

Слышал о тернарном операторе, и возник вопрос почему, если я добавляю, что-то вроде

PHP:
скопировать код в буфер обмена
  1. <?PHP
  2. $a =2;
  3. ($a==2)
  4. ? echo $c=(2+2)
  5. : echo 'yyy';
  6. ?>


выдает синтаксическую ошибку...в чем причина?
 
 Top
Okula
Отправлено: 09 Июля, 2012 - 04:49:16
Post Id



Участник


Покинул форум
Сообщений всего: 1389
Дата рег-ции: Окт. 2010  


Помог: 42 раз(а)




dimaua2, потому что так писать нельзя. Это неправильно, тебе об этом даже сам PHP говорит, выдавая ошибку синтаксиса.
 
 Top
PATCH
Отправлено: 09 Июля, 2012 - 04:55:44
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 924
Дата рег-ции: Апр. 2011  


Помог: 22 раз(а)




http://www.php.su/learnphp/operators/?compar

в 1) идите лесом с тернарным операторами долше будеш читать чем if () {} else {}

во вторых

ты проследи хоть логику работы
PHP:
скопировать код в буфер обмена
  1.    $a =2;
  2. echo ($a==2) ? 'lol' : 'nelol' ;
  3.  
  4. $b =  ($a==2) ? 'lol' : 'nelol' ;

PHP:
скопировать код в буфер обмена
  1.  
  2. переменая = (если $a == 2 )? то значение переменой равняется 'lol' : иначе 'nelol';

то есть после ? записывается значение и после : тоже значение не как не вывод какой то переменой просто значение.
 
 Top
Okula
Отправлено: 09 Июля, 2012 - 05:04:38
Post Id



Участник


Покинул форум
Сообщений всего: 1389
Дата рег-ции: Окт. 2010  


Помог: 42 раз(а)




PATCH, можно было бы куда проще объяснить Улыбка
условие ? значение1 : значение2

(Отредактировано автором: 09 Июля, 2012 - 05:04:57)

 
 Top
PATCH
Отправлено: 09 Июля, 2012 - 05:09:31
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 924
Дата рег-ции: Апр. 2011  


Помог: 22 раз(а)




ет не проще и бо он пытается при проверке условия вывести то или иное значение т.е было бы проще так показать)) и как присваевать значение переменой) тоже ради примера) со всеми скобками и кавычками и знаками) хотя можно было бы
оператор (условие) ? значение1 : значение2;
переменая = (условие) ? значение1 : значение2;
и то так не понятно что за условие что значит значение 1 и значение 2))
 
 Top
dimaua2
Отправлено: 09 Июля, 2012 - 14:58:48
Post Id



Посетитель


Покинул форум
Сообщений всего: 434
Дата рег-ции: Янв. 2012  


Помог: 0 раз(а)




условие ? значение1 : значение2
это я знал, просто решил поексперементировать, а мне пхп тут ошибку нарисовал))
Скажите верно ли я понял...вот смотрите
условие ($t=>9)
значение 1 ? 'yyy'
значение 2 : 'uiii';
То есть после знака вопроса и двоиточия можно, что-то вывести (или как лучше назвать?) в кавычках...и каких то действий сделать после них нельзя?
типо в значении 1 сделать $b=($y+$h-99/2) так?
и если нужно вывести что-то на экран, то нужно перед самим условием поставить ехо?

верно понял?
 
 Top
EuGen Администратор
Отправлено: 09 Июля, 2012 - 15:03:13
Post Id


Профессионал


Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007  
Откуда: Berlin


Помог: 707 раз(а)




dimaua2 пишет:
условие ($t=>9)

Некорректно. Конструкция => используется для указания ключей ассоциативных массивов. Корректно >=
Тернарный оператор можно заменить:
Если верно условие, идущее первым, то выполнится то, что после знака вопроса, иначе - то, что после двоеточия.


-----
Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
 
 Top
dimaua2
Отправлено: 09 Июля, 2012 - 15:13:47
Post Id



Посетитель


Покинул форум
Сообщений всего: 434
Дата рег-ции: Янв. 2012  


Помог: 0 раз(а)




усп то опечатка..хотя сказать ($t>=9)
кст можно немного подробнее за ключи? я прсото сейчас как раз масивы прохожу...
Цитата:
Если верно условие, идущее первым, то выполнится то, что после знака вопроса, иначе - то, что после двоеточия.

ну правильно иф и елсе...
а верно точнее возможно как я привел выше?

Цитата:
условие ($t>=9)
значение 1 ? 'yyy'
значение 2 : 'uiii';
То есть после знака вопроса и двоиточия можно, что-то вывести (или как лучше назвать?) в кавычках...и каких то действий сделать после них нельзя?
типо в значении 1 сделать $b=($y+$h-99/2) так?

(Отредактировано автором: 09 Июля, 2012 - 15:14:54)

 
 Top
EuGen Администратор
Отправлено: 09 Июля, 2012 - 15:27:36
Post Id


Профессионал


Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007  
Откуда: Berlin


Помог: 707 раз(а)




dimaua2
Нет, так как тернарный оператор допустимо использовать только в выражениях. Это не замена условного оператора if в полном смысле, этот оператор призван упростить записть выражений и не более.


-----
Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
 
 Top
dimaua2
Отправлено: 09 Июля, 2012 - 15:28:28
Post Id



Посетитель


Покинул форум
Сообщений всего: 434
Дата рег-ции: Янв. 2012  


Помог: 0 раз(а)




Я пока знаю что => вот так можно присвоить индекс масиву

PHP:
скопировать код в буфер обмена
  1.  
  2. $uuu =array (
  3. 22=>'jhioihiohn',
  4. 2=>22);
  5.  
  6.  

(Добавление)
аа ясно, выходит тернарный оператор лучше использовать допустим для вызова на экран определенного значения допустим

($yyy==$yy) ? "true" : "false";
и действий как в ифе, елсифе, елсе в тернарном операторе делать нельзя))
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Вопросы новичков »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB