Le doppie virgolette in php. Qual è la differenza tra stringhe con virgolette singole e doppie in PHP? php virgolette di escape

Questo breve articolo mostra come e dove utilizzare citazioni in PHP.

Virgolette singole (apostrofi) in PHP

Le stringhe racchiuse tra virgolette singole non vengono analizzate in alcun modo da PHP. Cioè, le virgolette singole rappresentano il testo racchiuso tra loro, così com'è.

// Corretto echo "Come stai?"; echo "Come stai? $nome"; echo "Come stai?".$nome; // echo errato "Come stai? $name";

Caratteri speciali tra virgolette singole e doppie

Ad esempio, per interpretare il carattere di tabulazione (\t) come un carattere di tabulazione e non come una barra e la lettera t, è necessario racchiudere la stringa di testo contenente il carattere di tabulazione tra doppi apici. Solo \' e \\ possono essere usati tra virgolette singole. Tutte le altre sequenze di escape (\n , \r , \$ , ecc.) non sono consentite tra virgolette singole.

// Echo sbagliato "Come stai? \n"; // Corretto echo "Come stai? \n";

Per evitare le virgolette doppie all'interno di una stringa, inserire le virgolette prima della barra rovesciata \" .

// eco errato "

Che cosa succede?

"; // Corretto eco "

Che cosa succede?

"; eco "

Che cosa succede?

";

Le doppie virgolette in PHP

Il testo racchiuso tra virgolette viene gestito in modo diverso. Ad esempio, le variabili racchiuse tra doppi apici vengono sostituite con i relativi valori. Questo rende conveniente comporre query SQL utilizzando le doppie virgolette.

$query = "INSERT INTO table (post,author,text,date) VALUES ("$id","$author","$text","$date")";

Che tipo di virgolette dovrebbero essere usate per decorare le stringhe: apostrofi o virgolette doppie classiche?

Analizziamo la differenza tra virgolette doppie e singole in PHP e usiamo esempi per capire quando usare quale.

Variabili e sequenze di escape per personaggi speciali, che si verificano in stringhe racchiuse tra virgolette singole, non vengono elaborate. Le stringhe circondate da apostrofi vengono elaborate dall'interprete PHP molto più velocemente di stringhe simili racchiuse tra virgolette doppie.

Il motivo è semplice: le stringhe tra virgolette vengono inoltre verificate dall'interprete PHP per la presenza di variabili e, se ce ne sono, il suo valore viene inserito nella stringa invece del nome della variabile. Ma la stringa racchiusa tra apostrofi viene percepita dall'interprete come testo normale e PHP non esegue alcuna trasformazione in queste stringhe. Penso che sia chiaro che l'elaborazione delle stringhe tra virgolette singole sarà comunque più veloce.

Per cominciare, descriveremo come definire una stringa, quindi verificheremo quanto sarà più veloce l'elaborazione delle stringhe tra virgolette singole.

Il modo più semplice per definire una stringa è racchiuderla tra virgolette singole ("). Per utilizzare le virgolette singole all'interno di una stringa racchiusa tra virgolette singole, queste devono essere precedute da un carattere barra rovesciata (\), ovvero con escape. Se la barra rovesciata deve precedere una singola virgoletta o trovarsi alla fine della stringa, è necessario duplicarla Se si tenta di eseguire l'escape di qualsiasi altro carattere, verrà stampata anche la barra rovesciata.

Ecco un esempio di utilizzo di virgolette singole:
// Output: una semplice stringa
echo "Stringa semplice";
// Output: sono qui
echo "Sono qui";
// Output: Questo non inserirà: \n newline
echo "Questo non inserirà: \n newline";
// Output: Anche la variabile $example non verrà sostituita
echo "Nemmeno la variabile $example verrà sostituita"; Se la stringa è racchiusa tra virgolette ("), PHP riconosce più sequenze di escape per i caratteri speciali e sostituisce anche il valore del nome della variabile nella stringa. Proprio come con le virgolette singole, per utilizzare le virgolette doppie all'interno della stringa racchiusa in virgolette doppie, devono essere precedute da una barra rovesciata (\).

Ecco un esempio di utilizzo delle virgolette doppie:
// Output: una semplice stringa
echo "Stringa semplice";
// Output: Azienda "Bucaneve ""
echo "Azienda \"Bucaneve\"";
// Output: questo si tradurrà in una nuova riga
echo "Questo si tradurrà in una nuova riga \n";
// Output: la variabile verrà sostituita
$esempio = "sostituisci";
echo "Variabile $esempio"; Dovresti anche ricordare che la sequenza "\n" (nuova riga), "\r" (ritorno a capo) è per testo semplice, non per HTML. Quindi nel browser non vedrai le modifiche (solo in codice sorgente pagine).

Scopriamo quanto sono più veloci le virgolette singole rispetto alle virgolette doppie. Per le misurazioni, scriveremo un breve script di test e noteremo immediatamente che se lo testerai tu stesso, i risultati, che dipendono dall'hardware del tuo PC o server, saranno diversi.
// Restituisce il timestamp all'inizio del ciclo
$inizio = microtempo(vero);
// Crea un loop loop per 1 milione di iterazioni
per ($i = 0; $i< 1000000; $i++) {
$text = "Stringa di caratteri qui";
}
// Calcola il tempo trascorso
$time = (microtime(true) - $start); Risultato: 0,09 secondi.

Se sostituiamo le virgolette singole con le virgolette doppie:
$text = "Stringa di caratteri qui"; Il risultato sarà di 0,10 secondi.

Come puoi vedere, quando si utilizzano stringhe di testo, la differenza nel tempo di esecuzione è molto piccola, si può anche dire che non esiste affatto. Il più interessante inizierà quando proveremo a combinare una stringa e una variabile.
$text = "Stringa di caratteri $i qui"; O
$testo = $i."Questa è una stringa di caratteri"; Risultato approssimativamente: 0,27 secondi.

La differenza è molto evidente. La concatenazione e le virgolette doppie influiscono chiaramente sulle prestazioni se le variabili vengono aggiunte alla stringa.

Quando il server elabora il codice, controlla l'intero contenuto delle virgolette doppie per variabili, costanti e altro. Richiede tempo. E ciò che è tra virgolette singole viene elaborato dal server come testo già pronto e non importa cosa c'è. La differenza tra le prestazioni delle virgolette singole e doppie è molto piccola, ma se stai sviluppando un progetto molto carico, pochi millisecondi risparmiati sono già una vittoria.

Una stringa in PHP è un insieme di caratteri di qualsiasi lunghezza. A differenza del C, le stringhe possono anche contenere caratteri nulli, che non influiranno in alcun modo sul programma. In altre parole, le stringhe possono essere utilizzate per memorizzare dati binari. La lunghezza della stringa è limitata solo dalla quantità di RAM libera.

In PHP, un carattere è uguale a un byte, il che significa che sono possibili esattamente 256 caratteri diversi. Ciò significa anche che PHP non ha il supporto Unicode integrato. Alcuni supporti per Unicode sono forniti dalle funzioni utf8_encode() E utf8_decode() .

Una stringa può essere facilmente elaborata utilizzando funzioni standard ed è anche possibile accedere direttamente a qualsiasi carattere in essa contenuto.

Un semplice esempio di variabile stringa:

$a= "Questo è solo testo scritto su una variabile stringa";
echo $a; // Output "Questo è solo testo scritto su una variabile stringa"
?>

Ora diamo un'occhiata più da vicino alla sintassi del tipo di dati. corda.

Sintassi di tipo stringa (stringhe)

Una stringa può essere definita in tre modi diversi.

Il modo più semplice per definire una stringa è racchiuderla tra virgolette singole (simbolo " ).

Per usare un singolo apice all'interno di una stringa, come in molti altri linguaggi, deve essere preceduto da una barra rovesciata ( \ ), cioè proteggerlo. Se la barra rovesciata deve precedere una singola virgoletta o trovarsi alla fine di una stringa, è necessario duplicarla. Nota che se cerchi di sfuggire a qualsiasi altro carattere, verrà stampata anche la barra rovesciata! Quindi generalmente non è necessario sfuggire alla barra rovesciata stessa.

A differenza delle altre due sintassi, variabili e sequenze di escape per caratteri speciali che si verificano in stringhe racchiuse in, Non elaborato.

Ecco un esempio di utilizzo di virgolette singole:

eco "questa è una stringa semplice";

eco "Inoltre, puoi inserire nelle righe
carattere di nuova riga come questo
perché va bene"
;

// Output: Un giorno Arnold disse: "Tornerò"
eco "Un giorno Arnold disse: "Tornerò"";

eco "Hai cancellato C:\\*.*?";

// Output: hai cancellato C:\*.*?
echo "Hai cancellato C:\*.*?" ;

// Output: Questo non inserirà: \n newline
eco "Questo non inserirà: \n nuova riga";

// Output: anche le variabili $expand non vengono sostituite con $ether
eco "Anche le variabili $expand non vengono sostituite con $ether";
?>

Se la stringa è racchiusa tra doppi apici ( " ), PHP riconosce più sequenze di escape per i caratteri speciali:

Tabella di fuga:

Sotto sequenza Senso
\N newline (LF o 0x0A (10) in ASCII)
\R ritorno a capo (CR o 0x0D (13) in ASCII)
\T tabulazione orizzontale (HT o 0x09 (9) in ASCII)
\\ barra rovesciata
\$ simbolo del dollaro
\" doppia citazione
\{1,3} una sequenza di caratteri che corrisponde a un'espressione regolare, un carattere in ottale
\x(1,2) sequenza di caratteri corrispondenti all'espressione regolare, carattere esadecimale

Ancora una volta, se vuoi mnemonizzare qualsiasi altro carattere, verrà stampata anche la barra rovesciata!

Un altro modo per definire le stringhe è usare heredoc-sintassi ("<<< "). Dopo<<< необходимо указать идентификатор, затем идет строка, а потом этот же идентификатор, закрывающий вставку.

L'identificatore di chiusura deve iniziare nella prima colonna della riga. Inoltre, l'identificatore deve seguire le stesse convenzioni di denominazione di tutti gli altri tag PHP: contenere solo caratteri alfanumerici e underscore e deve iniziare con una non cifra o un underscore.

Attenzione! È molto importante notare che la stringa con l'identificatore di chiusura non contiene altri caratteri, tranne forse un punto e virgola ( ; ). Ciò significa che è un identificatore e che non possono esserci spazi o tabulazioni prima o dopo il punto e virgola. È anche importante capire che il primo carattere prima dell'identificatore di chiusura deve essere un carattere di nuova riga, come definito dal sistema operativo. Ad esempio, su Windows® questo è \R.

Se questa regola viene violata e l'identificatore di chiusura non è "pulito", si considera che non esiste un identificatore di chiusura e PHP continuerà a cercarlo. Se, in questo caso, l'identificatore di chiusura corretto non viene mai trovato, causerà un errore di elaborazione con un numero di riga alla fine dello script.

Heredoc-text si comporta come una stringa con virgolette doppie senza averli. Ciò significa che non è necessario eseguire l'escape delle virgolette nell'heredoc, ma è comunque possibile utilizzare le sequenze di escape di cui sopra. Le variabili vengono gestite, ma è necessario prestare la stessa attenzione quando si utilizzano variabili complesse all'interno di un heredoc come si farebbe quando si lavora con le stringhe.

Esempio di definizione di stringa Heredoc:

$str =<<Esempio di linea,
che si estende su più righe
utilizzando la sintassi heredoc.
EOD;

/* Esempio più complesso con variabili. */
classe pippo
{
var $foo ;
var $barra ;

funzionefoo()
{
$this -> foo = "foo" ;
$this -> bar = array("Barra1" , "Barra2" , "Barra3" );
}
}

$foo = newfoo();
$nome = "MioNome" ;

eco<<Il mio nome è "$nome". Digito $foo-> pippo.
Ora sto tirando fuori
( $pippo -> barra [ 1 ]) .
Questo dovrebbe produrre una "A" maiuscola:
\x41
EOT;
?>

Non sono un esperto di programmazione PHP, ma sono un po' confuso perché vedo del codice in PHP con una stringa racchiusa tra virgolette singole e talvolta doppie.

So solo che nel linguaggio .NET o C, se è tra virgolette singole significa che è un carattere e non una stringa.

Soluzione

Cosa dovresti sapere

$a = "nome"; $b = "mio$a"; == "il mio nome" $c = "il mio $a"; != "il mio nome"

In PHP, le persone usano le virgolette singole per definire una stringa costante come "a" , "my name" , "abc xyz" mentre usano le virgolette doppie per definire una stringa contenente un identificatore come "a $b $c $d" .

E un'altra cosa

echo "il mio nome";

più veloce di

echo "il mio nome";

eco "mio" . $a;

più lento di

echo "mio $a";

Questo è vero per altre stringhe in uso.

In PHP, il testo tra virgolette singole viene trattato come un valore stringa, mentre il testo tra virgolette doppie analizzerà le variabili sostituendo ed elaborando il loro valore.

$test = "variabile"; echo "Ciao signor $test"; // l'output sarà: Hello Mr variabile echo "Hello Mr $test"; // l'output sarebbe: Hello Mr $test

Qui le virgolette doppie analizzano il valore e le virgolette singole vengono trattate come un valore stringa (senza analizzare la variabile $test).

Entrambi i tipi di caratteri nidificati sono stringhe. È conveniente utilizzare un tipo di citazione per concludere un altro tipo di citazione. """ e """ La più grande differenza tra i tipi di virgolette è che i riferimenti agli identificatori nidificati vengono sostituiti tra virgolette doppie, non tra virgolette singole.

Una stringa è un insieme di caratteri. In PHP, un carattere è uguale a un byte, il che significa che sono possibili esattamente 256 caratteri diversi. Ciò significa anche che PHP non ha il supporto Unicode nativo, che è fornito dalle funzioni utf8_encode() e utf8_decode().

Nota: non ci sono problemi se la stringa è molto grande. Non ci sono praticamente restrizioni sulla dimensione delle stringhe imposte da PHP, quindi non c'è assolutamente motivo di preoccuparsi della loro lunghezza.

Sintassi

    Una stringa può essere definita in tre modi diversi.

virgolette singole

Il modo più semplice per definire una stringa è racchiuderla tra virgolette singole (il carattere ").

Per usare una singola virgoletta all'interno di una stringa, come in molti altri linguaggi, deve essere preceduta da un carattere barra rovesciata (\), cioè con escape. Se la barra rovesciata deve precedere una singola virgoletta o trovarsi alla fine di una stringa, è necessario duplicarla. Nota che se cerchi di sfuggire a qualsiasi altro carattere, verrà stampata anche la barra rovesciata! Quindi generalmente non è necessario sfuggire alla barra rovesciata stessa.

Nota: in PHP 3, in questo caso verrà emesso un messaggio di livello E_NOTICE.

Nota: a differenza delle altre due sintassi, le variabili e le sequenze di escape per i caratteri speciali presenti nelle stringhe con apici singoli non vengono elaborate.

echo "questa è una semplice stringa"; echo "Puoi anche inserire nuove righe in stringhe come questa, dato che va bene"; // Output: Un giorno Arnold disse "Tornerò" echo "Un giorno Arnold disse "Tornerò""; // Output: hai cancellato C:\*.*? echo "Hai cancellato C:\\*.*?"; // Output: hai cancellato C:\*.*? echo "Hai cancellato C:\*.*?"; // Output: Questo non inserirà: \n una nuova riga echo "Questo non inserirà: \n una nuova riga"; // Output: Anche le variabili $expand non vengono sostituite con $uno echo "Anche le variabili $expand non vengono sostituite con $uno";

Virgolette

Se la stringa è racchiusa tra virgolette ("), PHP riconosce più sequenze di escape per i caratteri speciali:

Tabella 11-1. Sequenze di fuga

Ancora una volta, se vuoi mnemonizzare qualsiasi altro carattere, verrà stampata anche la barra rovesciata!

Ma la proprietà più importante delle stringhe con virgolette doppie è la gestione delle variabili. Vedere Gestione delle stringhe per maggiori dettagli.

Heredoc

Un altro modo per definire le stringhe è usare la sintassi heredoc ("

L'identificatore di chiusura deve iniziare nella prima colonna della riga. Inoltre, l'identificatore deve seguire le stesse convenzioni di denominazione di tutti gli altri tag PHP: contenere solo caratteri alfanumerici e underscore e deve iniziare con una non cifra o un underscore.

Attenzione

È molto importante notare che la stringa con l'identificativo di chiusura non contiene altri caratteri, con la possibile eccezione del punto e virgola (;). Ciò significa che l'identificatore non deve essere rientrato e che non possono esserci spazi o tabulazioni prima o dopo il punto e virgola. È anche importante capire che il primo carattere prima dell'identificatore di chiusura deve essere un carattere di nuova riga, come definito dal sistema operativo. Ad esempio, su Macintosh è \r.

Se questa regola viene violata e l'identificatore di chiusura non è "pulito", si considera che non esiste un identificatore di chiusura e PHP continuerà a cercarlo. Se, in questo caso, l'identificatore di chiusura corretto non viene mai trovato, causerà un errore di elaborazione con un numero di riga alla fine dello script.

Il testo Heredoc si comporta come una stringa con virgolette doppie senza averle. Ciò significa che non è necessario eseguire l'escape delle virgolette nell'heredoc, ma è comunque possibile utilizzare le sequenze di escape di cui sopra. Le variabili vengono gestite, ma è necessario prestare la stessa attenzione quando si utilizzano variabili complesse all'interno di un heredoc come si farebbe quando si lavora con le stringhe.

Esempio 11-2. Esempio di definizione di stringa Heredoc

$str =<<foo="pippo"; $this->bar = array("Barra1", "Barra2", "Barra3"); ) ) $foo = new foo(); $nome = "MioNome"; eco<<pippo. Ora emetto ($foo->bar). Questo dovrebbe produrre una "A" maiuscola: \x41 EOT;

Nota: il supporto heredoc è stato aggiunto in PHP 4.

Variabili di elaborazione

Se una stringa è definita tra virgolette o con un heredoc, vengono elaborate le variabili al suo interno.

Esistono due tipi di sintassi: semplice e complessa. La sintassi semplice è più facile e conveniente. Consente di elaborare una variabile, un valore di matrice (array) o una proprietà di un oggetto (oggetto).

La sintassi complessa è stata introdotta in PHP 4 e può essere riconosciuta dalle parentesi graffe che circondano l'espressione.

Sintassi semplice

Se l'interprete incontra un segno di dollaro ($), acquisisce quanti più caratteri possibile per formare un nome di variabile valido. Se si desidera specificare la fine di un nome, racchiudere il nome della variabile tra parentesi graffe.

$birra = "Heineken"; echo "Il gusto della $birra" è ottimo"; // funziona, """ è un carattere non valido per il nome della variabile echo "Ha bevuto delle $birre"; // non funziona, "s" è un carattere valido per un nome di variabile echo "Ha bevuto un po' di $(birra)"; // funziona echo "Ha bevuto un po' di ($birra)"; // lavori

Allo stesso modo, è possibile elaborare un elemento di un array (array) o una proprietà di un oggetto (object). Negli indici di matrice, la parentesi quadra di chiusura (]) segna la fine della definizione dell'indice. Le stesse regole si applicano alle proprietà degli oggetti come alle variabili semplici, sebbene non ci sia alcun trucco per loro come variabili.

// Questi esempi riguardano specificamente l'utilizzo di array all'interno di // stringhe. Al di fuori delle stringhe, racchiudi sempre le chiavi stringa // dell'array tra virgolette e non utilizzare al di fuori delle stringhe (parentesi). // Mostriamo tutti gli errori error_reporting(E_ALL); $frutta = array("fragola" => "rosso", "banana" => "giallo"); // Funziona, ma nota che funziona diversamente al di fuori della stringa tra virgolette echo "Una banana è $frutta."; //Funzioni echo "Una banana è ($frutta["banana"])."; // Funziona, ma PHP, come descritto di seguito, prima cerca // la costante banana. echo "Una banana è ($frutta)."; // Non funziona, usa le parentesi graffe. Ciò causerà un errore di elaborazione. echo "Una banana è $frutta["banana"]."; // echo "Una banana è " funziona. $frutta["banana"] . "."; // Funziona echo "Questo quadrato è largo $quadrato->larghezza metri."; // Non funziona. Vedere la sintassi complessa per una soluzione. echo "Questo quadrato è largo $quadrato->larghezza00 centimetri.";

Per qualcosa di più complesso, devi usare una sintassi complessa.

Sintassi complessa (riccia).

Si chiama complesso non perché sia ​​difficile da capire, ma perché consente l'uso di espressioni complesse.

In effetti, puoi includere qualsiasi valore namespace su una riga con questa sintassi. Scrivi semplicemente l'espressione nello stesso modo in cui lo faresti all'esterno della stringa, quindi avvolgila in ( e ). Poiché non è possibile eseguire l'escape di "(", questa sintassi verrà riconosciuta solo quando $ segue immediatamente (. (Utilizzare "(\$" o "\($" per visualizzare "($"). Alcuni esempi illustrativi:

// Mostriamo tutti gli errori error_reporting(E_ALL); $grande = "fantastico"; // Non funziona, restituisce: Questo è ( fantastico) echo "Questo è ( $ottimo)"; // Funziona, restituisce: Questo è fantastico echo "Questo è ($fantastico)"; echo "Questo è $(ottimo)"; // Funziona echo "Questo quadrato è largo ($quadrato->larghezza)00 centimetri."; // Funziona echo "Funziona: ($arr)"; // Questo è sbagliato per lo stesso motivo per cui $foo è sbagliato fuori // dalla riga. In altre parole, questo // funzionerà ancora, ma poiché PHP cerca prima la costante foo, genererà un errore di livello // E_NOTICE (costante non definita). echo "Questo è sbagliato: ($arr)"; // Lavori. Quando si utilizzano array multidimensionali, utilizzare sempre le parentesi graffe all'interno delle // stringhe echo "Funziona: ($arr["foo"])"; // Lavori. echo "Funziona: " . $arr["pippo"]; echo "Puoi anche scrivere ($oggetto->valori->nome)"; echo "Questo è il valore della variabile chiamata $nome: ($($nome))";

Accedere a un carattere in una stringa e modificarlo

I caratteri nelle stringhe possono essere utilizzati e modificati specificando il loro offset dall'inizio della stringa, partendo da zero, tra parentesi graffe dopo la stringa.

Nota: per la compatibilità con le versioni precedenti, hai ancora la possibilità di utilizzare le parentesi dell'array per lo stesso scopo. Tuttavia, a partire da PHP 4 questa sintassi è deprecata.

Esempio 11-3. Alcuni esempi di stringhe

// Ottieni il primo carattere della stringa $str = "Questo è un test."; $primo = $str(0); // Ottiene il terzo carattere della stringa $terzo = $str(2); // Ottieni l'ultimo carattere della stringa $str = "Questo è ancora un test."; $ultimo = $str(strlen($str)-1); // Cambia l'ultimo carattere della stringa $str = "Guarda il mare"; $str(strlen($str)-1) = "io";

Funzioni utili e operatori

Le stringhe possono essere concatenate utilizzando il "." (punto). Si noti che l'operatore di addizione "+" non funziona qui. Vedere l'argomento Operatori stringa per ulteriori informazioni.

Ci sono molte funzioni utili per modificare le stringhe.

Le funzioni principali sono descritte nella sezione sulle funzioni di stringa, funzioni di espressioni regolari per ricerca e sostituzione avanzate (in due parti: Perl e POSIX esteso).

Sono disponibili anche funzioni per le stringhe URL e funzioni per crittografare/decrittografare le stringhe (mcrypt e mhash).

Infine, se non hai ancora trovato quello che cerchi, vedi anche funzioni tipo carattere.

Converti in stringa

È possibile convertire un valore in una stringa utilizzando la funzione cast (stringa) o strval(). Nelle espressioni in cui è necessaria una stringa, la conversione avviene automaticamente. Ciò accade quando si utilizzano le funzioni echo() o print() o quando si confronta il valore di una variabile con una stringa. La lettura delle sezioni Tipi e Manipolazione del tipo del manuale renderà più chiaro quanto segue. Vedi anche settype() .

Il valore booleano TRUE viene convertito nella stringa "1" e il valore FALSE viene rappresentato come "" (stringa vuota). In questo modo, puoi convertire i valori in entrambe le direzioni, da un tipo booleano a un tipo stringa e viceversa.

Un numero intero (integer) o un numero in virgola mobile (float) viene convertito in una stringa rappresentata da un numero costituito dalle sue cifre (compreso l'esponente per i numeri in virgola mobile).

Gli array vengono sempre convertiti nella stringa "Array", quindi non è possibile visualizzare il contenuto di un array utilizzando echo() o print() per scoprire cosa contiene. Per visualizzare un singolo elemento, devi fare qualcosa come echo $arr["foo"]. Vedi sotto per suggerimenti su come visualizzare/visualizzare tutti i contenuti.

Gli oggetti vengono sempre convertiti nella stringa "Object". Se vuoi stampare il valore di una variabile membro oggetto per scopi di debug, leggi i paragrafi seguenti. Se vuoi ottenere il nome della classe dell'oggetto richiesto, usa get_class() .

Le risorse vengono sempre convertite in stringhe con la struttura "Resource id #1", dove 1 è il numero di risorsa univoco assegnatogli da PHP in fase di esecuzione. Se vuoi ottenere il tipo di risorsa, usa .

NULL viene sempre convertito in una stringa vuota.

Come puoi vedere sopra, l'output di array, oggetti o risorse non ti fornisce alcuna informazione utile sui valori stessi. Un modo più appropriato per stampare i valori per il debug è utilizzare le funzioni print_r() e var_dump().

Puoi anche convertire i valori PHP in stringhe per l'archiviazione persistente. Questo metodo è chiamato serializzazione e può essere eseguito con la funzione serialize(). Inoltre, se la tua installazione PHP ha il supporto WDDX, puoi serializzare i valori PHP in strutture XML.

Conversione di stringhe in numeri

Se la stringa viene riconosciuta come valore numerico, il valore e il tipo risultanti vengono determinati come mostrato di seguito.

Una stringa verrà riconosciuta come float se contiene uno qualsiasi dei caratteri ".", "e" o "E". In caso contrario, sarà definito come un numero intero.

Il valore è determinato dalla parte iniziale della stringa. Se la stringa inizia con un valore numerico valido, verrà utilizzato tale valore. In caso contrario, il valore sarà 0 (zero). Un valore numerico valido è costituito da una o più cifre (che possono contenere un punto decimale), facoltativamente precedute da un segno, seguito da un esponente facoltativo. L'esponente è "e" o "E" seguito da una o più cifre.

$foo = 1 + "10.5"; // $foo è un float (11.5) $foo = 1 + "-1.3e3"; // $foo è un float (-1299) $foo = 1 + "bob-1.3e3"; // $foo è un numero intero (1) $foo = 1 + "bob3"; // $foo è un numero intero (1) $foo = 1 + "10 maialini"; // $foo è un numero intero (11) $foo = 4 + "10.2 Little Piggies"; // $pippo è un float (14.2) $pippo = "10.0 maiali " + 1; // $foo è un float (11) $foo = "10.0 maiali " + 1.0; // $foo è un float (11)

Vedere la sezione strtod(3) della documentazione Unix per maggiori informazioni su questa conversione.

Se vuoi testare uno qualsiasi degli esempi in questa sezione, puoi copiarlo e incollarlo e la seguente riga per vedere cosa succede:

Echo "\$pippo==$pippo; digitare: " . gettype($foo) . "
\N";

Non aspettarti di ottenere il codice del carattere convertendolo in un numero intero (come potresti fare ad esempio in C). Per convertire i caratteri nei loro codici e viceversa, usa ord() e




Superiore