2010-11-12 5 views
12

Я видел этот код

if (is_null($$textVarName)) { 
$$textVarName = $_defaultTexts[$type]; 
} 

что код "$$"?

+0

возможно дубликат [? Что делает $$ означает в PHP] (http://stackoverflow.com/questions/2715654/what-does-mean-in-php) – Gordon

+0

* (связанный) * [Что означает этот символ в PHP] (http://stackoverflow.com/questions/3737139/reference-what-does-this-symbol-mean-in-php) – Gordon

+0

Спасибо большое Gordon – meotimdihia

ответ

31

Это зло, что это такое.

Это значение будет принимать значение $textVarName и использовать его как имя переменной. Например:

$foo = 'hello'; 
$hello = 'The Output'; 
echo $$foo; // displays "The Output" 
+0

@ VoteyDisciple; это бесконечно? Могу ли я иметь $$$ foo? Или он останавливается на двоих? – BeemerGuy

+4

@Beemer: он бесконечен. Кстати, быстрее попробовать - а не спрашивать и ждать ответа. – zerkms

+0

@zerkms: спасибо за ответ, но пришло ли вам в голову, что у меня может не быть компилятора? – BeemerGuy

4
foreach($_POST as $key=>$value)$$key=$value; 

теперь автомагически, если предыдущая форма имела поле с именем «имя пользователя» теперь есть переменной $ имя пользователя, который содержит значение, представленное в форме. не самый лучший или безопасный метод, но когда у вас есть карман, полный ногтей, это чертовски молоток

Это довольно плохая практика и никогда не поощряется, но все программисты PHP, которые я знаю, тайно сортируются.

+1

Привет, я cfreak, и я PHP-кодер. Теперь ты меня знаешь. Я абсолютно ненавижу это. :-) (конечно, мне совсем не нравится PHP, но он оплачивает счета, поэтому я это делаю) – Cfreak

+0

Несмотря на то, что это плохая практика ... Мне это нравится! У меня когда-то было 50 записей в '$ _POST', и было определенно не забавно создавать переменную для каждого (даже с автоматизацией с чем-то вроде Excel). Хотел бы я знать этот ярлык тогда. – BeemerGuy

+5

Обратите внимание, что вы можете использовать 'extract ($ _ POST, EXTR_PREFIX_ALL," p _ ")' для достижения того же эффекта - плюс дополнительная безопасность с префиксом переменной. Бонусные баллы для фильтрации 'array_map'. – mario