2011-09-10 16 views

risposta

18

http://www.php.net/manual/en/language.types.string.php#language.types.string.casting

Un valore può essere convertito in una stringa utilizzando il cast (stringa) o la funzione() strval.

Sembra uguale a me.

+3

La conversione e la conversione in realtà sono uguali, ma la conversione è molto più lento in confronto. Ecco un punto di riferimento, che prende anche concatenazione e interpolazione in considerazione: http://leifw.wickland.net/2009/08/performance-of-converting-integer-to.html –

4

Uno è una chiamata di funzione, l'altro è un typecast interno. Senza aver controllato, immagino che quest'ultimo sia più veloce di alcuni cicli, ma non dovrebbe davvero fare la differenza.

+1

Alcuni parametri di riferimento che contengono anche concatenazione e interpolazione: http://leifw.wickland.net/2009/08/performance-of-converting-integer-to.html –

2

Sono generalmente intercambiabili poiché PHP utilizza la conversione automatica dei tipi e il tipo di una variabile è determinato dal contesto in cui viene utilizzata la variabile.

Alcune differenze sono che strval ($ var) restituirà il valore stringa di $ var while (stringa) $ var sta convertendo esplicitamente il "tipo" di $ var durante la valutazione.

Inoltre, dal manuale, per strval() $ var "può essere qualsiasi tipo scalare o un oggetto che implementa il metodo __toString.Non è possibile utilizzare strval() su matrici o su oggetti che non implementano il metodo __toString. "

Come accennato da @Lars (stringa) è generalmente più veloce.

+1

"$ var sta effettivamente cambiando il" tipo " di $ var. ": È sbagliato, perché finché non assegni qualcosa alla variabile nulla lo cambierà. "Non puoi usare strval() su array o su oggetti che non implementano il metodo __toString." Giusto, ma vale anche per il '(stringa)' -cast. Quindi non è diverso qui. – KingCrunch

+0

Sono corretto. Ho adattato la mia risposta per essere più preciso. La documentazione sulla pagina di tipo booleano usa la frase "convertire esplicitamente", quindi ho preso ciò per indicare che il tipo di $ var era stato modificato, ma per questo è necessaria una chiamata a settype(). –

+0

potresti fornire un link al manuale di cui stai parlando? – Pacerier