O $ dizi [anahtar] gibi tek veya çift quotion olmadan dizi kullanmak için tamam mı? Ben tek veya çift tırnak kullanmak istemiyorsanız PHP sabiti ilk bakmak çünkü kötü olduğunu düşündüm. Arkadaşlarımdan biri farketmez söyledi.
Siz ne düşünüyorsunuz?
It is not considered as OK - bu çoğu durumda çalışacaktır bile.
Basically, when PHP sees this :
echo $array[key];
Bu key -- and, if there is none, if will take the 'key' değeri denilen, define ile tanımlı, sürekli arayacaktır.
But, if there is something like this earlier in your code :
define('key', 'glop');
Bu almayacağız
echo $array['key'];
artık; bunun yerine, the value of the key sabiti strong> kullanacaksınız - ve kod olarak aynı olacaktır:
echo $array['glop'];
In the end, not putting quotes arround the key's name is bad for at least two reasons :
define wrong adıyla ;-) ile sürekli'key'error_reporting and display_errors , the notices/warnings/errors are still generated, even if discarded later) üretirYani: Eğer bu noktada o adam dinlemek gerekir: o yanlış: it does matter.
And if you need some "proof" that's "better" than what people can tell you on stackoverflow, you can point him to this section of the manual, as a reference : Why is $foo[bar] wrong?
Bu not Okay ve diğerleri dedi ne eklemek için, çoğu durumda bir hata tetikler:
8 Notice Use of undefined constant key - assumed 'key' in file: 'index.php' on line 46
Için PHP Manual içinde bölümüne bakın "Neden $ foo [bar] yanlıştır?" http://php.net/manual/en/language.types.array.php: "Dizi ve yapılmayacak şeyler" Bu sayfadaki altında
PHP Manual - Why is $foo[bar] wrong? Gönderen
Her zaman bir dize sayıllı indis tırnak kullanabilirsiniz. $ Foo [bar] değildir Örneğin, foo ['bar'] $, doğrudur. Ama neden? Eski komut sözdizimi bu tür karşılaşmaya ortak:
<?php
$foo[bar] = 'enemy';
echo $foo[bar];
// etc
?>
Bu yanlıştır, ama çalışıyor. Nedeni, bu kod tanımlanmamış bir sabit (bar) yerine bir dize (- tırnak fark 'bar') sahip olmasıdır. PHP gelecekte ne yazık ki böyle bir kod için, aynı ada sahip, sabit tanımlayabilir. PHP otomatik çıplak dize içeren bir dize içine bir çıplak dize (bilinen herhangi bir sembole karşılık gelmez bir tırnaksız dize) dönüştürür çünkü çalışır. Tanımlanmış bir sabit adında bir bar var Örneğin, daha sonra PHP 'bar' dizgesini yerleştirecek ve bunu kullanacaktır.
Eğer kontrol etmek için kılavuzda biraz daha örnekler var.
Anahtar aslında bir sabit olmadıkça, sen tuşu tırnak koyarak olmamak için hiçbir neden yoktur.
PHP çalışır yolu bunu koyduk ne sabit bir değer arar, fakat sabit bulunamazsa eğer bunun dize temsilini alır.
Birisi yolda kodunuzu düzenlemek ve bu anahtar adı ile bir sabit eklemek için olsaydı, bu sadece daha fazla baş ağrısı neden olur.
Bu bad practice nedenlerle bir dizi için, anahtar değerleri alıntı değil ediyor:
define 'd sabitleri olarak anlamlı sembol isimler, potansiyel çarpışmalar."]").define 's zaman alır arıyor.Eğer bir sürü etrafında geçiyoruz bir şey sadece standart unsurları adları etrafında tırnak yazarak önlemek isteyen iseniz, belki de yerine bir object->property sözdizimi almak yerine, hangi nesneleri kullanmak isteyebilirsiniz $array["element"] sözdizimi.
Bu yanlış ve sabit oto-tanımlayacağız:
$var = $array[bar];
Bu kullanım Ancak doğrudur:
$var = "string $array[bar] ...";
PHP2 ile uyumluluk için bu eski sözdizimi hala dize bağlamında izin verilir. Ayrıca etrafında {} kaşlı ayraçlar kullandığınız sürece anahtarı alıntı, bir ayrıştırma hatası yol açacak.