1. PHP / Говнокод #25531

    0

    1. 1
    2. 2
    В "PHP" одинарные кавычки быстрее, чем двойные.
    https://habr.com/ru/company/alfa/blog/447416/

    Какой анскилл )))

    Запостил: BoeHHblu_nemyx, 10 Апреля 2019

    Комментарии (13) RSS

    • В 'J' нет строк в двойных кавычках. Именно поэтому я за 'J'.
      Ответить
    • >> print дополнительно возвращает константу, равную 1

      Этим можно воспользоваться в ненормальном программировании.

      <?php echo ((print 2) << print '*') * ((print 2) << print '=');


      https://ideone.com/Gswsh5
      Ответить
      • <?php print print print print print 0;

        Выводит: 01111

        https://ideone.com/x0Wa7B
        Ответить
        • Походу где-то память портится, не?
          Ответить
          • говнокоду же: The function must take one parameter, a pointer to a pointer to a pointer to a pointer to a type compatible with copy-on-write.
            Ответить
          • Тут всё просто.

            С одной стороны, print в качестве аргумента захватывает, сколько может захватить (почти как в «Бейсике»). Он жадный. В предыдущем примере я взял (print 2) в скобки, чтобы он не захватил оставшуюся часть формулы.

            С другой стороны, print в «PHP» возвращает единицу, а перед этим в стандартный поток выводит строковое представление своего аргумента.

            Итак, выражение эквивалентно следующему:
            print (print (print (print (print 0))));

            Сначала вызовется самый правый print и выведет 0.
            Он вернёт 1, которую потом напечатает предпоследний print.
            Он вернёт 1, которую потом напечатает предпредпоследний print.
            Он вернёт 1, которую потом напечатает предпредпредпоследний второй слева print.
            Он вернёт 1, которую потом напечатает предпредпредпредпоследний самый левый print.

            Наконец, единица, которую вернул самый левый print, нигде не используется.
            Ответить
            • Сразу видно, что ты пэхапэшник. Ты понимаешь «PHP».
              Ответить
              • Да, но я ненормальный пехапэшник. Какому пэхапэшнику придёт в голову написа́ть print print print print ''; чтобы вывести число 111?
                Ответить
                • То ли дело 'j':
                  (,~$$1r4x7e4blyadina)$(#$$2e7r7p2blyadvrotebal)!:(#,~4e8r5p4bydloneponimaet)&(>:$$$1r2e14blyadpetusharaebanaya),":&>(#$$$4p7r2e_1bashebashmetgashshemhamforashjohnatanbratashkrymnash)"_&.>(+&-&*&%/,~,~)#$$20057e2bkhryukneesveenosobaka
                  111
                  Ответить
                  • Кто дочитал до конца (так же, как я), палец вверх!

                    А если серьёзно, то как это работает?
                    Ответить
    • Конечно быстрее, это и просто если подумать, то можно понять.
      Так как в двойных кавычках интерпретатор ищет переменные, чтобы можно было их без явной конкатенации в строку подставить. Одинарные же кавычки указывают ему, что это тупо строка, в которую ничего не надо подставлять.
      Ответить
    • показать все, что скрытоvanished
      Ответить

    Добавить комментарий