http://garbage.kek/?bird=chiken&what_bird=jareniy_chiken Есть код: PHP: foreach($_GET as $key => $val) { $$key = $val; } echo $bird; echo $what_bird; Так, СТОП, не расчехляйте инструменты пенетрации, господа, я просто спросить! Не так давно наткнулся на такую штуку, что в цикле создаются переменные по ключу массива вот таким образом. Мне это показалось довольно наглым на вид, мол, пошёл нахер, законом не запрешено! То есть даже не "$" . $key. Мне стало интересно, как к этому относятся профессиональные пехэп разработчики. Мне интересна конкретно строчка 2. На $_GET не обращайте внимания, я это просто так добавил, ЧТОБ ЗАЖЕЧЬ ОГОНЬ В ГЛАЗАХ! Пожалуста, спасибо.
Цикл отстой. Достаточно вызвать функцию Код (Text): extract($_GET); но поступать так с суперглобальными массивами - отстой, очень не безопасно.
Накойляд вообще это делать? GET же ну..ну как бы уже массив. Смысл его растаскивать на переменные? Нужно что-то из гета? 1) Проверь наличие. 2) Проверь содержимое по принципу "ожидание-реальность" 3) Забирай значение на свои нужды.
Да я ничего с этим делать не собирался, мне просто понравилося $$key. У вас не бывает такого, вот прям чтоб любвь с первого взгляда? Выглядит как какой-то хакцкий хак, за который взросые по ушам дадут, вот я и хотел спросить А видел я это в курсе по пхп каком-то, только вот не помню нафига оно делалось...
@HeavyLady еще можно $$$key и т.д. PHP: $a = 'a'; $$$a = 'gg'; echo $a; такие штуки можно использовать в каких-нибудь завершенных алгоритмах, например внутри небольших функций, обрабатывающих определенный формат данных.
Со свойствами и методами иногда удобно. У меня постоянно что-то вроде PHP: public actionCommand() { $command = $_GET["command"]; if (method_exist($this, $command)) { $this->$command(); } }
с что сука характерно - зажёг, аж очко свело --- Добавлено --- хуйня хуйня хуйня не совсем хуйня хуйня Слона не заметили, чуваки! Это ж просто улёт!!1 Революция! Нео и Матрыця! Глядите: PHP: $key = 1; $$key = 2; var_dump($$key); че скажете?
Скажем, что имя переменной не может начинаться с числа, и вообще удивительно, что интерпретатор на этом месте не упал с фаталкой.
Я бы засабмитил это на пыховый багтрекер. Тут явно что-то идет не так. Заповедь программиста: "Не бойся, когда не работает что-то, что должно. Бойся, когда работает то, что не должно работать."
Можно тогда тоже в копилку того,что не должно работать положить: PHP: <?php $a=123; $$a=456; echo $$a; Код (Text): 456