virgolette doppie in php. Qual è la differenza tra stringhe con virgolette singole e doppie in PHP? Php che evita le virgolette

Questo breve articolo mostra come e dove utilizzarlo virgolette in PHP.

Virgolette singole (apostrofi) in PHP

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

// Corretto echo "Come va la vita?"; echo "Come va la vita? $nome"; echo "Come va la vita?".$nome; // echo errato "Come stai? $nome";

Caratteri speciali tra virgolette singole e doppie

Per garantire che, ad esempio, il carattere di tabulazione (\t) venga interpretato come un carattere di tabulazione anziché come una barra e la lettera t, è necessario racchiudere la riga di testo che contiene il carattere di tabulazione tra virgolette doppie. È possibile utilizzare solo \' e \\ tra virgolette singole. Tutte le altre sequenze di escape (\n, \r, \$, ecc.) non sono consentite tra virgolette singole.

// eco errata "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?

"; // Correggi l'eco "

Che cosa succede?

"; eco "

Che cosa succede?

";

Virgolette doppie in PHP

Il testo racchiuso tra virgolette doppie viene trattato in modo molto diverso. Ad esempio, le variabili racchiuse tra virgolette doppie vengono sostituite con i relativi valori. Ciò rende conveniente la composizione query SQL utilizzando le virgolette doppie.

$query = "INSERT INTO table (post,autore,testo,data) VALUES ("$id","$autore","$testo","$data"");

Che tipo di virgolette devo utilizzare per formattare le stringhe: apostrofi o virgolette doppie classiche?

Diamo un'occhiata alla differenza tra virgolette doppie e singole in PHP e usiamo esempi per scoprire quando usarli.

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

Il motivo qui è semplice: l'interprete PHP controlla inoltre le stringhe tra virgolette doppie per la presenza di variabili e, se vengono trovate, al posto del nome della variabile, il suo valore viene inserito nella stringa. Ma una riga racchiusa tra apostrofi viene percepita dall'interprete come testo normale e PHP non effettua alcuna trasformazione in queste righe. Penso che sia chiaro che l’elaborazione delle stringhe tra virgolette singole sarà in ogni caso più veloce.

Per prima cosa descriviamo come definire una stringa, quindi controlliamo quanto più veloce sarà l'elaborazione delle stringhe tra virgolette singole.

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

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

Ecco un esempio di utilizzo delle virgolette doppie:
// Risultato: stringa semplice
echo "Stringa semplice";
// Risultati: Compagnia "Bucaneve"
echo "Azienda \"Bucaneve\"";
// Output: questo porterà a una nuova riga
echo "Questo verrà interrotto in una nuova riga\n";
// Output: la variabile verrà sostituita
$esempio = "verrà sostituito";
echo "Variabile $esempio"; Dovresti anche ricordare che la sequenza "\n" (nuova riga), "\r" (ritorno a capo) è per testo semplice, non HTML. Quindi non vedrai le modifiche nel browser (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 subito che se lo testate voi stessi, i risultati, che dipendono dall'hardware del vostro PC o server, saranno diversi.
// Restituisce il timestamp all'inizio del ciclo
$inizio = microtempo(true);
// Crea un ciclo per 1 milione di iterazioni
per ($i = 0; $i< 1000000; $i++) {
$testo = "Ecco una stringa di caratteri";
}
// Calcola il tempo impiegato
$tempo = (microtempo(true) - $inizio); Risultato: 0,09 secondi.

Se sostituiamo le virgolette singole con virgolette doppie:
$testo = "Ecco una stringa di caratteri"; Il risultato sarà 0,10 secondi.

Come puoi vedere, quando si utilizzano stringhe di testo, la differenza nel tempo di esecuzione è molto piccola, si potrebbe addirittura dire che non esiste affatto. Il divertimento inizia quando proviamo a combinare una stringa e una variabile.
$testo = "Ecco la stringa di caratteri $i"; O
$testo = $i."Ecco una stringa di caratteri"; Risultato approssimativo: 0,27 secondi.

La differenza è abbastanza evidente. La concatenazione e le virgolette doppie influiscono chiaramente sulle prestazioni quando si aggiungono variabili alla stringa.

Quando il server elabora il codice, controlla tutto il contenuto delle virgolette doppie per variabili, costanti e altro. Richiede tempo. E il server elabora ciò che è tra le virgolette singole come testo già pronto e non si preoccupa di 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 contenere anche caratteri nulli, che non influenzeranno in alcun modo il 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 equivale a un byte, il che significa che sono possibili esattamente 256 caratteri diversi. Ciò significa anche che PHP non ha il supporto Unicode nativo. Un po' di supporto Unicode è fornito dalle funzioni codifica_utf8() E utf8_decode() .

La stringa può essere facilmente elaborata utilizzando le funzioni standard ed è anche possibile accedere direttamente a qualsiasi dei suoi caratteri.

Un semplice esempio di variabile stringa:

$a= "È solo testo memorizzato in una variabile stringa";
eco $a; //Risulta "Questo è solo testo scritto in una variabile stringa"
?>

Ora esaminiamo in dettaglio la sintassi del tipo di dati. corda.

Sintassi del tipo stringa

Una stringa può essere definita in tre modi diversi.

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

Per utilizzare una virgoletta singola all'interno di una stringa, come in molti altri linguaggi, deve essere preceduta da un carattere barra rovesciata ( \ ), ovvero schermarlo. Se la barra rovesciata deve precedere una virgoletta singola o trovarsi alla fine della riga, è necessario duplicarla. Nota che se provi a 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, le variabili e le sequenze di escape per i caratteri speciali che si verificano nelle stringhe racchiuse in, Non sono in fase di elaborazione.

Ecco un esempio di utilizzo delle virgolette singole:

eco "questa è una stringa semplice";

Eco "Puoi anche inserire nelle righe
carattere di nuova riga quindi,
perchè è normale"
;

// Risultato: Arnold una volta disse: "Tornerò"
eco "Un giorno Arnold disse: 'Tornerò''.;

Eco "Hai eliminato C:\\*.*?";

// Risultato: hai eliminato C:\*.*?
echo "Hai eliminato C:\*.*?" ;

// Output: questo non inserirà: \n una nuova riga
eco "Questo non inserirà:\nnewline";

// Risultati: le variabili $expand e $either non vengono sostituite
eco "Le variabili $expand e $oither non vengono sostituite";
?>

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

Tabella delle sequenze di controllo:

Sotto sequenza Senso
\N nuova riga (LF o 0x0A (10) in ASCII)
\R ritorno a capo (CR o 0x0D (13) in ASCII)
\T tab orizzontale (HT o 0x09 (9) in ASCII)
\\ barra rovesciata
\$ simbolo del dollaro
\" doppia virgoletta
\{1,3} una sequenza di caratteri corrispondente a un'espressione regolare, un carattere nel sistema numerico ottale
\x(1,2) sequenza di caratteri corrispondente all'espressione regolare, carattere nel sistema numerico esadecimale

Ricordiamo ancora che se si vuole mnemonizzare qualsiasi altro carattere verrà stampato anche il backslash!

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

L'identificatore di chiusura deve iniziare nella prima colonna della riga. Inoltre, l'identificatore deve seguire le stesse regole di denominazione di tutti gli altri tag in PHP: contenere solo caratteri alfanumerici e un carattere di sottolineatura e deve iniziare con un carattere non numerico o un carattere di sottolineatura.

Attenzione! È molto importante notare che la riga dell'identificatore di chiusura non contiene altri caratteri, tranne forse un punto e virgola ( ; ). Ciò significa che l'identificatore e che non possono esserci spazi o tabulazioni prima o dopo il punto e virgola. È anche importante comprendere 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", l'identificatore di chiusura viene considerato mancante e PHP continuerà a cercarlo ulteriormente. Se in questo caso non viene mai trovato l'identificatore di chiusura corretto, si causerà un errore nell'elaborazione con il numero di riga alla fine dello script.

Heredoc-text si comporta allo stesso modo di una stringa tra virgolette doppie, senza averle. Ciò significa che non è necessario eseguire l'escape delle virgolette in heredoc, ma è comunque possibile utilizzare le sequenze di escape sopra. Le variabili vengono elaborate, ma è necessario prestare la stessa attenzione quando si utilizzano variabili complesse all'interno di heredoc come quando si lavora con le stringhe.

Esempio di definizione di una stringa heredoc:

$str =<<Riga di esempio,
coprendo più righe,
utilizzando la sintassi heredoc.
EOD;

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

Funzione pippo()
{
$questo -> foo = "Foo";
$questo -> barra = array("Bar1" , "Bar2" , "Bar3" );
}
}

$foo = nuovo pippo();
$nome = "Il mio nome";

Eco<<Il mio nome è "$nome". Sto digitando $foo-> pippo.
Ora sto deducendo
( $foo -> barra [ 1 ]) .
Questo dovrebbe produrre una lettera maiuscola "A":
\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 = "il mio $a"; == "il mio nome" $c = "il mio $a"; != "il mio nome"

In PHP, le persone usano virgolette singole per definire una stringa costante come "a", "mio nome", "abc xyz" mentre usano 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 "il mio $a";

Questo vale per le altre stringhe utilizzate.

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 sarebbe: Hello Mr variabile echo "Hello Mr $test"; // l'output sarebbe: Ciao signor $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 annidati sono stringhe. È conveniente utilizzare un tipo di citazione per concludere un altro tipo di citazione. """ e """. La differenza più grande tra i tipi di virgolette è che i riferimenti agli identificatori annidati vengono sostituiti tra virgolette doppie anziché tra virgolette singole.

Una stringa è un insieme di caratteri. In PHP un carattere equivale a un byte, il che significa che sono possibili esattamente 256 caratteri diversi. Ciò significa anche che PHP non dispone del supporto Unicode nativo, ma una parte del supporto Unicode è fornita 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 utilizzare una virgoletta singola all'interno di una stringa, come in molti altri linguaggi, questa deve essere preceduta da una barra rovesciata (\), ovvero con un carattere di escape. Se la barra rovesciata deve precedere una virgoletta singola o trovarsi alla fine della riga, è necessario duplicarla. Nota che se provi a 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 che compaiono nelle stringhe tra virgolette singole non vengono elaborate.

Echo "questa è una stringa semplice"; echo "In questo modo puoi anche inserire un carattere di nuova riga nelle stringhe, come è normale"; // Risultati: Arnold una volta disse: "Tornerò" echo "Arnold una volta disse: "Tornerò""; // Risultato: hai eliminato C:\*.*? echo "Hai eliminato C:\\*.*?"; // Risultato: hai eliminato C:\*.*? echo "Hai eliminato C:\*.*?"; // Risultati: Questo non inserirà: \n una nuova riga echo "Questo non inserirà: \n una nuova riga"; // Risultati: $expand e $entrambe le variabili non vengono sostituite echo "$expand e $entrambi le variabili non vengono sostituite";

Virgolette

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

Tabella 11-1. Sequenze di fuga

Ripetiamo, se vuoi mnemonizzare qualsiasi altro carattere, verrà stampato anche il backslash!

Ma la proprietà più importante delle stringhe tra virgolette doppie è la gestione delle variabili. Vedi più dettagli: elaborazione delle stringhe.

Heredoc

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

L'identificatore di chiusura deve iniziare nella prima colonna della riga. Inoltre, l'identificatore deve seguire le stesse regole di denominazione di tutti gli altri tag in PHP: contenere solo caratteri alfanumerici e un carattere di sottolineatura e deve iniziare con un carattere non numerico o un carattere di sottolineatura.

Attenzione

È molto importante notare che la riga identificativa di chiusura non contiene altri caratteri, tranne eventualmente un 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 comprendere 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", l'identificatore di chiusura viene considerato mancante e PHP continuerà a cercarlo ulteriormente. Se in questo caso non viene mai trovato l'identificatore di chiusura corretto, si causerà un errore nell'elaborazione con il numero di riga alla fine dello script.

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

Esempio 11-2. Esempio di definizione di stringa Heredoc

$str =<<foo = "foo"; $questo->barra = array("Bar1", "Bar2", "Bar3"); ) ) $foo = nuovo foo(); $nome = "Il mio nome"; eco<<pippo. Ora emetto ($foo->bar). Questo dovrebbe produrre una lettera maiuscola "A": \x41 EOT;

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

Gestione delle variabili

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

Esistono due tipi di sintassi: semplice e complessa. La sintassi semplice è più semplice e conveniente. Ti consente di elaborare una variabile, un valore di array o una proprietà di un oggetto.

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

Sintassi semplice

Se l'interprete incontra il simbolo del dollaro ($), prende quanti più caratteri possibile per formare un nome di variabile valido. Se vuoi specificare la fine di un nome, racchiudi il nome della variabile tra parentesi graffe.

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

Allo stesso modo è possibile elaborare un elemento di un array (array) o una proprietà di un oggetto (oggetto). Negli indici di array, una parentesi quadra di chiusura (]) segna la fine della definizione dell'indice. Per le proprietà degli oggetti valgono le stesse regole che per le variabili semplici, sebbene non possano essere ingannate come con le variabili.

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

Per qualcosa di più complesso, è necessario utilizzare una sintassi complessa.

Sintassi complessa (riccia).

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

In effetti, puoi includere qualsiasi valore presente nello spazio dei nomi in linea con questa sintassi. Scrivi semplicemente l'espressione nello stesso modo in cui faresti fuori dalla riga, quindi racchiuderla tra ( e ). Poiché non è possibile eseguire l'escape "(", questa sintassi verrà riconosciuta solo quando $ segue immediatamente (. (Utilizzare "(\$" o "\($" per eseguire l'escape "($"). Alcuni esempi illustrativi:

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

Accesso e modifica di un carattere in una stringa

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

Nota: per compatibilità con le versioni precedenti, hai ancora la possibilità di utilizzare parentesi di array per gli stessi scopi. 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 $third = $str(2); // Ottiene l'ultimo carattere della stringa $str = "Questo è ancora un test."; $ultimo = $str(strlen($str)-1); // Cambia l'ultimo carattere della riga $str = "Guarda il mare"; $str(strlen($str)-1) = "Io";

Funzioni utili e operatori

Le stringhe possono essere concatenate utilizzando l'operatore "." (punto). Tieni presente che l'operatore di addizione "+" non funziona qui. Per ulteriori informazioni, vedere Operatori di stringa.

Esistono molte funzioni utili per modificare le stringhe.

Le funzioni principali sono descritte nella sezione sulle funzioni stringa, funzioni di espressione regolare per la ricerca e sostituzione avanzata (in due parti: Perl e POSIX avanzata).

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

Infine, se ancora non hai trovato quello che cerchi, vedi anche le funzioni relative ai tipi di carattere.

Converti in stringa

Puoi convertire un valore in una stringa utilizzando una funzione cast (stringa) o strval(). Nelle espressioni in cui è richiesta una stringa, la conversione avviene automaticamente. Ciò accade quando usi le funzioni echo() o print() o quando confronti 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 "" (la stringa vuota). In questo modo puoi convertire i valori in entrambe le direzioni: da booleano a stringa e viceversa.

Un numero intero o float viene convertito in una stringa, rappresentata da un numero costituito dalle sue cifre (incluso 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 vedere cosa contiene. Per visualizzare un singolo elemento devi fare qualcosa come echo $arr["foo"]. Vedi sotto per suggerimenti su come visualizzare/visualizzare tutto il contenuto.

Gli oggetti vengono sempre convertiti nella stringa "Object". Se vuoi stampare il valore di una variabile membro oggetto a scopo 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 assegnato da PHP in fase di runtime. Se vuoi ottenere il tipo di risorsa, usa .

NULL viene sempre convertito nella stringa vuota.

Come puoi vedere sopra, l'output di array, oggetti o risorse non fornisce alcuna informazione utile sui valori stessi. Un modo migliore per stampare 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 utilizzando 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 segue.

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

Il valore è determinato dall'inizio della stringa. Se la riga inizia con un valore numerico valido, verrà utilizzato quel valore. Altrimenti 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.

$pippo = 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"; // $foo è un float (14.2) $foo = "10.0 maiali " + 1; // $foo è float (11) $foo = "10.0 maiali " + 1.0; // $foo è float (11)

Per ulteriori informazioni su questa conversione, vedere la sezione su strtod(3) nella documentazione Unix.

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

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

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




Superiore