2011-01-20 10 views
14
$binary = b'Binary string'; 

b inary olarak bir dizi oluşturmak için ne gibi sonuçları vardır?Dize değişmezlerinin önündeki b ne yapar?

Bu belgede bunun hakkında herhangi bir ipucu bulamadım. Sadece language_scanner'a bakarken bu küçük merakı buldum.

+0

Bu [5.2.1'de eklendi] (http://php.net/manual/en/language.types.type-juggling.php) - Hangi PHP sürümünü kullanıyorsunuz? – Sampson

+0

PHP 5.3.5 kullanıyorum. Ama neden bu önemli? – NikiC

+0

, '6.0' içinde eklenmiştir, bu nedenle, '6.0' 'dan önceki uygulama,' bBinary String 'haline geldiği için bir' E_NOTICE 'atar. – RobertPitt

cevap

15

Bu asla-to-yayınlanacak PHP sürüm 6 için bir ileri uyumluluk belirteci olan yerli unicode desteği olmalıydı.

PHP6'da, dizeler varsayılan olarak unicode'tur ve işlevler bunlar üzerinde unicode karakter düzeyinde çalışır. Bu "b", "ikili dizgeyi", yani, işlevlerin bayt düzeyinde çalıştığı bir unicode dizgeyi ifade eder.

Bu, tüm dizelerin ikili olduğu PHP! = 6'da hiçbir etkisi yoktur.

+0

Ah sözdizimi hatası atmak, bu açık hale getirir. Bu uygun uyumluluk şeyi yaptılar. İleriye dönük başka tokenler var mı? – NikiC

+0

İlgili "(ikili)" cast belirteci dışında bildiğimden değil. – arnaud576875

1

İkili döküm, 5.2.1'den beri kullanılabilir ancak , unicode dizgilerinin de geçerli olması durumunda 6.0'a kadar geçerli olmaz. Bu 5.2.6 kullanarak bir sunucu üzerinde benim için şu anda özel bir şey yapmaz açıklıyor

:

<?php 
$t = b"hey"; 
var_dump($t); 
//string(3) "hey" 

$s = (binary)"hey"; 
var_dump($s); 
//string(3) "hey" 
?>