Differenze tra due stringhe in una funzione PHP

April 13

Differenze tra due stringhe in una funzione PHP


Per confrontare le stringhe in una funzione PHP, è possibile in genere utilizzare una semplice valutazione del tipo "if ($ stringa1 == $ string2)." A volte, tuttavia, due stringhe in una funzione PHP possono avere differenze sottili tra loro --- una conseguenza del modo PHP tratta variabili; perché nessun tipo di dati viene memorizzato con la variabile, PHP permette confronti di stringhe anche se un confronto di stringhe non sarebbe appropriato e, a volte mostra un comportamento strano quando si tenta di verificare la presenza di differenze tra due stringhe.

PHP Typing variabile

Linguaggi di programmazione, di norma, può essere sia "fortemente" o "debole" digitato. In un linguaggio fortemente tipizzato, variabili hanno un tipo esplicito --- come "integer" o "stringa". PHP è un linguaggio debolmente tipizzato; la variabile "$ var1 = 1.0" può essere trattato come un intero, un numero in virgola mobile (se moltiplicata per un numero decimale, per esempio) o una stringa (quando concatenato con l'operatore ".") a seconda di come viene utilizzato. PHP fa molto poco controllo variabile, che è generalmente utile perché fornisce ulteriore flessibilità ed elimina la necessità di colata. D'altra parte, in talune circostanze, ciò può causare un comportamento imprevisto in programmazione.

Valori di stringa e Casting

PHP supporta l'utilizzo di colata --- convertire una variabile espressamente da un tipo all'altro --- includendo il tipo di variabile tra parentesi prima viene inizializzata la variabile. Ad esempio, "$ var2 = (string) $ var1" inizializza "$ var2" come una stringa esplicita. PHP permette anche on-the-fly di fusione stringa mediante l'uso del "strval) (" la funzione: il codice "$ VAR3 = true" crea "$ VAR3" come una variabile booleana. "Strval ($ VAR3)" tratterà la stessa variabile booleana come una stringa, come nel confronti di stringhe o le operazioni di sottostringa.

confronti di stringhe

A volte, la tipizzazione debole di PHP può diventare un problema. Ad esempio, si consideri il caso di "$ var1 = 1.0; $ var2 = 1 ;." Un confronto tra i due PHP tratta loro come uguali: if ($ var1 == $ var2) restituisce "vero", perché per default PHP li tratta come numeri. Questo rimane vero anche che sono avvolti in strval () funzioni: if (strval ($ var1) == strval ($ var2)) saranno anche tornare "vero". Per confrontare con precisione queste due stringhe in una funzione PHP, utilizzare il "===" confronto: if ($ var1 === $ var2) restituirà "false".

Oggetti come stringhe

la volontà di PHP per convertire le variabili on-the-fly può anche causare problemi quando si utilizzano gli oggetti. Ad esempio, si consideri un documento XML che contiene la stessa stringa (ad esempio, un nome come "John Doe") in due posizioni. Se si carica ogni in una variabile con libreria integrata di PHP "SimpleXML", un confronto tra le due variabili restituirà "false", anche se il valore della stringa è identica, perché ciascuno di essi trasporta informazioni sulla gerarchia XML e le due sono tecnicamente differenti perché erano situati in diverse parti del file XML. In questo caso, strval () verrà in soccorso restituendo solo la stringa, senza l'informazione nodo aggiuntivo.