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

Quali conseguenze deve creare una stringa come b inary?Cosa fa il b davanti ai letterali stringa?

Non ho trovato alcun suggerimento a riguardo nella documentazione. Ho appena trovato questa piccola curiosità mentre guardavo attraverso language_scanner.

+0

Questo è stato [aggiunto in 5.2.1] (http://php.net/manual/en/language.types.type-juggling.php) - Quale versione di PHP stai usando? – Sampson

+0

Sto usando PHP 5.3.5. Ma perché è importante? – NikiC

+0

è stato aggiunto in '6.0', ecco perché era importante, quale applicazione prima di' 6.0' sarebbe più che semplice concatenare la stringa in modo che diventasse 'bBinary String', ma lanciare un' E_NOTICE'. – RobertPitt

risposta

15

Questo è un segno di compatibilità in avanti per la non-to-be-released PHP versione 6, che dovrebbe avere il supporto nativo Unicode.

In PHP6, le stringhe sono unicode per impostazione predefinita e le funzioni operano su un livello di carattere Unicode. Questa "b" significa "stringa binaria", cioè una stringa non unicode, su cui le funzioni operano a livello di byte.

Questo non ha alcun effetto in PHP! = 6, dove tutte le stringhe sono binarie.

+0

Ah, questo rende chiaro. Interessante che abbiano fatto questa cosa per la compatibilità in avanti. Ci sono altri token compatibili? – NikiC

+0

Non che io sappia tranne il relativo token cast "(binario)". – arnaud576875

1

Il lancio binario è disponibile dal 5.2.1 ma non ha effetto fino al 6.0 quando le stringhe Unicode hanno effetto.

che spiega perché questo non fa nulla di speciale in questo momento per me su un server utilizzando 5.2.6:

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

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