Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: условие if но только через : ? как
 
 автор: himera7   (14.12.2007 в 14:46)   письмо автору
 
 

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

   
 
 автор: sim5   (14.12.2007 в 14:48)   письмо автору
 
   для: himera7   (14.12.2007 в 14:46)
 

if ($a > 1) $b = 5; else $b = 8;
$b = $a > 1 ? 5 : 8;

   
 
 автор: mihdan   (14.12.2007 в 16:54)   письмо автору
 
   для: sim5   (14.12.2007 в 14:48)
 


<?
if ($a 1$b 5; else $b 8;
$b = ($a 1) ? 8;
?>

   
 
 автор: sim5   (14.12.2007 в 16:57)   письмо автору
 
   для: mihdan   (14.12.2007 в 16:54)
 

В данном случае скобки не обязательны.

   
 
 автор: mihdan   (14.12.2007 в 17:00)   письмо автору
 
   для: sim5   (14.12.2007 в 16:57)
 

Согласен, но лучше приучиться писать так, ведь в условии может быть и не одно значение - дело принципа ;)

   
 
 автор: sim5   (14.12.2007 в 17:06)   письмо автору
 
   для: mihdan   (14.12.2007 в 17:00)
 

Пишите так, как считаете нужным, а я понимаю то, что пишу для себя, правила же скобок еще из школы...

   
 
 автор: bronenos   (14.12.2007 в 17:45)   письмо автору
 
   для: sim5   (14.12.2007 в 17:06)
 

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

   
 
 автор: Trianon   (14.12.2007 в 20:01)   письмо автору
 
   для: sim5   (14.12.2007 в 17:06)
 

Вот тут Вы ой как ошибаетесь.
Правила приоритета и ассоциативности для условной операции господа разработчики php умудрились заточить поперек тех же правил в с/с++

   
 
 автор: sim5   (14.12.2007 в 20:05)   письмо автору
 
   для: Trianon   (14.12.2007 в 20:01)
 

Я всегда напишу так: (2 + 2) * 2, если мне нужно будет получить 8. У меня в условии $a > 1, и если бы это условие не работало вне скобок, я бы их прописал. В чем моя вина?-)

   
 
 автор: Trianon   (14.12.2007 в 21:52)   письмо автору
 
   для: sim5   (14.12.2007 в 20:05)
 

>Я всегда напишу так: (2 + 2) * 2, если мне нужно будет получить 8.

Мы вроде про условную операцию говорим?

>В чем моя вина?-)

А Вы разработчик php, реализовавший анализатор выражений?

   
 
 автор: sim5   (15.12.2007 в 06:45)   письмо автору
 
   для: Trianon   (14.12.2007 в 21:52)
 

Это не важно, я к тому, что я привык не перегружать скобками то, что не неждается в них. Ниже, bronenos показал условную операцию, которая, на мой взгяд, более запутана (естественно для тех кто не знаком с нею), чем традиционная запись if... else. В тоже время запись $b = $a > 1 ? .... без скобок показалась ему нечетабельной.
Я не из числа разработчиков, слава Богу :)

   
 
 автор: bronenos   (15.12.2007 в 11:42)   письмо автору
 
   для: sim5   (15.12.2007 в 06:45)
 

почему нечитабельна
просто мне со скобками чуть нагляднее

   
 
 автор: а-я   (14.12.2007 в 17:59)   письмо автору
 
   для: himera7   (14.12.2007 в 14:46)
 

интересно, а elseif можно использовать в этой кострукции?
или это только для простых условий

   
 
 автор: mihdan   (14.12.2007 в 18:08)   письмо автору
 
   для: а-я   (14.12.2007 в 17:59)
 

Можно

   
 
 автор: а-я   (14.12.2007 в 18:23)   письмо автору
 
   для: mihdan   (14.12.2007 в 18:08)
 

как?

   
 
 автор: SHAman   (14.12.2007 в 18:34)   письмо автору
 
   для: а-я   (14.12.2007 в 18:23)
 


$max = ($a != $b) ?
         (($a>$b) ? $a : $b)
         : 0;

   
 
 автор: afdm   (14.12.2007 в 22:59)   письмо автору
 
   для: SHAman   (14.12.2007 в 18:34)
 

объясните, что вообще это такое ? ?

   
 
 автор: bronenos   (14.12.2007 в 23:08)   письмо автору
 
   для: SHAman   (14.12.2007 в 18:34)
 

<?
$max 
= ($a != $b) ? ($a>$b) ? $a $b 0;

if (
$a != $b)
  if (
$a $b)
    
$max $a;
  else
    
$max $b;
else
  
$max 0;
?>

   
 
 автор: afdm   (15.12.2007 в 10:29)   письмо автору
 
   для: bronenos   (14.12.2007 в 23:08)
 

А не могли бы вы мне "разжевать"?!

   
 
 автор: Unkind   (15.12.2007 в 10:41)   письмо автору
 
   для: afdm   (15.12.2007 в 10:29)
 

Этот оператор имеет синтаксис condition ? iftrue : iffalse (условие ? если_истинно : если_ложно)
<?php
$result 
true "Условие верное" "Условие неверное"//Всегда будет "Условие верное"
$result false "Условие верное" "Условие неверное"//Всегда будет "Условие неверное"
?>


В записи же "$max = ($a != $b) ? ($a>$b) ? $a : $b : 0" просто используется оператор "... ? ... : ..." два раза. Если $a не равно $b, то следует еще один оператор, в противном случае возвращается 0.
Так вот этот второй оператор проверяет больше ли $a, чем $b. Если это так, то возвращается наибольшее значение, т.е. $a, если нет, то $b.

   
 
 автор: afdm   (15.12.2007 в 12:23)   письмо автору
 
   для: Unkind   (15.12.2007 в 10:41)
 

спасибо вам всем! всё понятно :)))

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования