"PHP" / Говнокод #11916 Ссылка на оригинал

0

  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
  7. 7
  8. 8
  9. 9
  10. 10
  11. 11
  12. 12
  13. 13
  14. 14
  15. 15
  16. 16
  17. 17
  18. 18
  19. 19
  20. 20
  21. 21
  22. 22
<?php

   //You can even add more Dollar Signs

   $Bar = "a";
   $Foo = "Bar";
   $World = "Foo";
   $Hello = "World";
   $a = "Hello";

   $a; //Returns Hello
   $$a; //Returns World
   $$$a; //Returns Foo
   $$$$a; //Returns Bar
   $$$$$a; //Returns a

   $$$$$$a; //Returns Hello
   $$$$$$$a; //Returns World

   //... and so on ...//

?>

Из комментов на http://www.php.net/manual/en/language.variables.variable.php

Запостил: xaionaro xaionaro, (Updated )

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

    • $ немного похож на eval
      $$a в php это примерно eval(eval("a")) в жабоскрипте, только ограниченный именами переменных.
      Ответить
      • А, понял, а я уж было подумал, что $$ переходит к предыдущей переменной в списке.
        Ответить
        • Да, я подумал, как кулхацкер, а надо было думать, как лиспер. Вот она, идеологическая пропасть!
          Ответить
          • Да я точно так же подумал. Не кулцхакер vs лиспер, а статические языки vs. динамические.
            >$ немного похож на eval
            Теперь понятно откуда пошла народная мудрость:
            "Обилие $ в пхп - это к говну."
            Ответить
    • Где здесь указатели, byss?

      Самое обыкновенное обращение к переменной по ее имени.
      Ответить
      • char *Bar = "a";
           char **Foo = Bar;
           char ***World = Foo;
           char ****Hello = World;
           char *****a = Hello;
        
           a; //Returns Hello
           *a; //Returns World
           **a; //Returns Foo
           ***a; //Returns Bar
           ****a; //Returns "a"

        Похоже же.
        Ответить
        • Эх, похапешники. А адрес кто брать будет? Доллары любите, а про амперсанды забыли.
          Ответить
          • Фейспалм на мою похмельную голову, забыл амперсанды. Но я не похапешник, я ObjC-шник 🙂
            Ответить
        • Похоже, да не тоже 😉

          В php запросто можно сделать $World = "Bar", а здесь для этого придется менять типы у половины переменных. Это скорее вот так:
          map<string, string> globals;
          globals["Bar"] = "a";
          globals["Foo"] = "Bar";
          globals["World"] = "Foo";
          globals["Hello"] = "World";
          globals["a"] = "Hello";
          
          globals["a"]; // returns Hello
          globals[globals["a"]]; // returns World
          ...
          Ответить
  • тыкать носом в синтетические примеры, которые на простых примерах демонстрируют возможности - это путь настоящего квалифицированного разработчика.
    Ответить
    • Не-не, я лично только "за" такие примеры. Просто прикольно зациклено: "Hello World Foo Bar a Hello World Foo Bar a Hello World [...]", и показалось достаточно достойным, чтобы поделиться 🙂
      Ответить
  • что-то такое уже видел) там ещё было что-то про идота со справкой:-)
    Ответить
  • имя переменной получается из значения. В итоге всё зациклено
    Ответить

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

Я, guest, находясь в здравом уме и твердой памяти, торжественно заявляю:

    А не использовать ли нам bbcode?


    8