За последние 24 часа нас посетили 52282 программиста и 1480 роботов. Сейчас ищут 1159 программистов ...

Что означает ,такая запись $one = 5 && true && 6 ?

Тема в разделе "PHP для новичков", создана пользователем zahermaher, 5 сен 2015.

  1. zahermaher

    zahermaher Новичок

    С нами с:
    27 сен 2014
    Сообщения:
    169
    Симпатии:
    14
    Здравствуйте.
    Встретил в коде необычную строчку :
    Код (PHP):
    1.  <?php 
    2. $one = 5 && true && 6 ;
    3. echo $one; 
    4. ?> 
    Выводит единицу, при любом значении вместо 5 и 6 ,даже текстовом.

    Если заменить true на false ,то на экран ничего не выводиться.

    Что означает эта запись и для чего используется?
     
  2. Deonis

    Deonis Старожил

    С нами с:
    15 фев 2013
    Сообщения:
    1.521
    Симпатии:
    504
    1 - true, ничего (или 0) - false. По сути это условие и эту же запись можно было бы записать так:
    Код (PHP):
    1. if( 5 && true && 6 ) {
    2.     $one = true;
    3. } else {
    4.     $one = false;
    5. }
    6. // или так
    7. $one = 5 && true && 6 ? true : false; 
     
  3. zahermaher

    zahermaher Новичок

    С нами с:
    27 сен 2014
    Сообщения:
    169
    Симпатии:
    14
    спасибо.правильно упростить так?
    Код (PHP):
    1. $one = true;
    2. echo $one; 
    3.  
    результат что с true ,что с false аналогичен первоначальному примеру
     
  4. Deonis

    Deonis Старожил

    С нами с:
    15 фев 2013
    Сообщения:
    1.521
    Симпатии:
    504
    Неправильно. Каждый из аргументов условия должен вернуть true, т.к. используется логический оператор && (И) и только тогда переменной $one будет присвоено true: 5 == true и true == true и 6 == true.
     
  5. zahermaher

    zahermaher Новичок

    С нами с:
    27 сен 2014
    Сообщения:
    169
    Симпатии:
    14
    а все понял спасибо!
    можно еще один маленький вопросик?

    Код (PHP):
    1. $foo='p';
    2. $foo++;
    3. echo $foo;
    4.  
    результат будет q . почему такой результат?)
     
  6. Deonis

    Deonis Старожил

    С нами с:
    15 фев 2013
    Сообщения:
    1.521
    Симпатии:
    504
    Я не знаю, как в других языках программирования, но php поддерживает инкремент с буквенными значениями латинского алфавита. После "P" идёт "Q". Вы присвоили переменной значение "P" и увеличили его на единицу ($foo++), т.е. как бы перешли на следующую букву алфавита.
     
  7. zahermaher

    zahermaher Новичок

    С нами с:
    27 сен 2014
    Сообщения:
    169
    Симпатии:
    14
    спасибо за разъяснения!
     
  8. Deonis

    Deonis Старожил

    С нами с:
    15 фев 2013
    Сообщения:
    1.521
    Симпатии:
    504
    Не за что. Думаю, что кто-нибудь тут расскажет вам эту особенность с более научной точки зрения, чем я ;)
     
  9. rodent90

    rodent90 Новичок

    С нами с:
    26 мар 2015
    Сообщения:
    533
    Симпатии:
    37