2010-11-12 9 views
12

Bu kodu gördüm

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

kod "$$" nedir?

+0

[? PHP'de anlama $$ ne] olası yinelenen (http://stackoverflow.com/questions/2715654/what-does-mean-in-php) – Gordon

+0

* (ilgili) * [Bu sembol PHP'de ne anlama gelir?] (http://stackoverflow.com/questions/3737139/reference-what-does-this-symbol-mean-in-php) – Gordon

+0

Çok teşekkürler Gordon – meotimdihia

cevap

31

Kötü olan şey budur.

Bu, $textVarName'daki değeri alır ve bunu değişken ad olarak kullanır. Örneğin:

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

@ VoteyDisciple; bu sonsuz mu? Dolandırıcılık yapabilir miyim? Yoksa ikide mi durur? – BeemerGuy

+4

@Beemer: bu sonsuzdur. Btw, denemek için daha hızlı - sormak ve cevap beklemek daha. – zerkms

+0

@zerkms: Cevabınız için teşekkürler, ancak bir derleyicinin kullanışlı olmaması için size mi geldi? – BeemerGuy

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

şimdi, hepsini otomatik olarak önceki form 'kullanıcı adı' artık formda gönderilen değerini tutan bir değişken olarak adlandırılan $ username var adlı bir alan olsaydı. en büyük ya da güvenli yöntem değil, ancak bir çivi dolu bir cebiniz olduğunda, bu bir çekiç bir çekiç

bu oldukça kötü bir uygulamadır ve asla teşvik edilmez ama benim gibi gizlice sorta biliyorum tüm PHP kodlayıcılar.

+1

Merhaba, ben cfreak ve ben bir PHP kodlayıcısıyım. Şimdi beni biliyorsun. Kesinlikle nefret ediyorum. :-) (Tabii ki PHP'yi hiç sevmiyorum ama faturaları öylesine öderim) – Cfreak

+0

Kötü bir uygulama olmasına rağmen ... Onu seviyorum !! Bir keresinde '$ _POST'da 50 giriş yapmıştım ve her biri için bir değişken yapmak kesinlikle eğlenceli değildi (bunu Excel gibi bir şeyle otomatikleştirerek bile). Keşke o zaman bu kısayolu biliyordum. – BeemerGuy

+5

Aynı efekti elde etmek için 'extract ($ _ POST, EXTR_PREFIX_ALL, "p _") 'yi kullanabileceğinizi ve değişken bir önekle daha fazla güvenlik sağlayabileceğinizi unutmayın. Array_map filtreleme için bonus puanları. – mario