Вниз  PHP и мелкие вопросы
- 5.04.2014 / 18:06
aNNiMON
  Супервизор

aNNiMON 
Сейчас: Offline
Helltar, посмотри вывод и поймёшь в чём вопрос.
__________________
 let live
- 5.04.2014 / 18:40
Helltar
  Пользователь

Helltar 
Сейчас: Offline
  1. echo 'ololo: ' . 1 < 2 ? 3 : 4;

3. Норм.

  1. function checkRange($min, $value, $max) {
  2.     return ($value < $min) ? $min : ($value > $max) ? $max : $value;
  3. }
  4.  
  5. echo checkRange(0, 6, 10) . '<br/>';

6. Норм.

  1. function checkRange($min, $value, $max)
  2. {
  3.     if ($value < $min)
  4.         return $min;
  5.     elseif ($value > $max)
  6.         return $max;
  7.     else
  8.         return $value;
  9. }
  10.  
  11. echo checkRange(0, -6, 10);

0. Норм :biggrin:
- 5.04.2014 / 18:44
aNNiMON
  Супервизор

aNNiMON 
Сейчас: Offline
Helltar, а чего ж в последнем примере проверку развернул?) Неужто-ль тернарный оператор 10 выдавал?

Попробуй вместо 1,2,3,4 в первом примере переменные использовать.
  1. function checkRange($min, $value, $max) {
  2.     echo 'ololo: ' . $value < $min ? $min : $value;
  3.     return ($value < $min) ? $min : ($value > $max) ? $max : $value;
  4. }

__________________
 let live

Изменено aNNiMON (5.04 / 18:47) (всего 3 раза)
- 5.04.2014 / 18:49
Helltar
  Пользователь

Helltar 
Сейчас: Offline
aNNiMON, -6.

Пример #3 Неочевидное поведение тернарного оператора

  1. <?php
  2.  
  3. // на первый взгляд, следующий код должен вывести 'true'
  4. echo (true?'true':false?'t':'f');
  5.  
  6. // однако, он выводит 't'
  7. // это происходит потому, что тернарные выражения вычисляются слева направо
  8.  
  9. // это намного более очевидная версия вышеприведенного кода
  10. echo ((true ? 'true' : false) ? 't' : 'f');
  11.  
  12. // здесь вы можете видеть, что первое выражение вычисляется в 'true', которое
  13. // в свою очередь вычисляется в (bool)true, таким образом возвращая истинную ветвь
  14. // второго тернарного выражения.
  15. ?>

:bart:

Изменено Helltar (5.04 / 18:50) (всего 1 раз)
- 5.04.2014 / 18:53
aNNiMON
  Супервизор

aNNiMON 
Сейчас: Offline
Helltar, ну вот теперь я спокоен.
К слову:
echo 'ololo: ' . $value < $min ? $min : $value;
у меня вообще не выводит строку, тупо её пропускает)
__________________
 let live

Изменено aNNiMON (5.04 / 18:53) (всего 1 раз)
- 5.04.2014 / 19:01
Helltar
  Пользователь

Helltar 
Сейчас: Offline
  1. function checkRange($min, $value, $max) {
  2.     echo 'ololo: ' . $value < $min ? $min : $value;
  3. }
  4.  
  5. checkRange(1, 2, 3);

1. Не норм.

  1. function checkRange($min, $value, $max) {
  2.     echo 'ololo: ' . ($value < $min ? $min : $value);
  3. }
  4.  
  5. checkRange(1, 2, 3);

2. Норм.
- 6.04.2014 / 02:50
Ксакеп
  Модератор форума

Ксакеп 
Сейчас: Offline
aNNiMON, ай ай. Приоритеты операций не знаешь =/
- 6.04.2014 / 05:14
aNNiMON
  Супервизор

aNNiMON 
Сейчас: Offline
Ксакеп, такой же код не java вполне работает.
__________________
 let live
- 6.04.2014 / 13:16
web_demon
  Супервизор

web_demon 
Сейчас: Offline
aNNiMON, я в какой-то то-ли книженции, то-ли статье читал что скобки нужно лепить всегда. Мол это хороший тон и не нужно будет другим людям разбираться в приоритете. Оно так и есть, сейчас в редакторах вторая скобка подсвечивается автоматически.
Немного не в тему, но для меня когда-то было открытием что
  1. echo '---' . (3+4) .'----';
  2.  
  3. echo '---' . 3+4 .'----';
это совсем не одно и то же.
С тех пор леплю скобки всегда, где нужно, а может, и не нужно. А то потом баг фиг отловишь.

Изменено web_demon (6.04 / 13:19) (всего 4 раза)
- 6.04.2014 / 15:14
vl@volk
  Пользователь

vl@volk 
Сейчас: Offline
web_demon, а что выведет?
__________________
 знает толк
Наверх  Всего сообщений: 4740
Фильтровать сообщения
Поиск по теме
Файлы топика (129)