¿Cuál es la diferencia entre hacer un molde de cuerda y strval
en php?Función de conversión de cadena de php contra strval ¿qué debo usar?
strval($value)
;(string)$value
;
¿Cuál es la diferencia entre hacer un molde de cuerda y strval
en php?Función de conversión de cadena de php contra strval ¿qué debo usar?
strval($value)
;
(string)$value
;
http://www.php.net/manual/en/language.types.string.php#language.types.string.casting
Un valor se puede convertir en una cadena utilizando el molde (cadena) o la función() strval.
A mí me pasa lo mismo.
Uno es una llamada de función, el otro es un encasillado interno. Sin haber comprobado, supongo que este último es más rápido en algunos ciclos, pero en realidad no debería marcar la diferencia.
Algunos puntos de referencia para esto también contienen concatenación e interpolación: http://leifw.wickland.net/2009/08/performance-of-converting-integer-to.html –
En general, son intercambiables porque PHP utiliza la conversión de tipo automática y el tipo de variable está determinado por el contexto en el que se utiliza la variable.
Algunas diferencias son que strval ($ var) devolverá el valor de cadena de $ var mientras que (cadena) $ var está convirtiendo explícitamente el "tipo" de $ var durante la evaluación.
Además, del manual, strval() $ var "puede ser cualquier tipo escalar o un objeto que implemente el método __toString. No puede usar strval() en arreglos o en objetos que no implementen el método __toString. "
Según lo mencionado por @Lars (cadena) es generalmente más rápido.
"$ var está cambiando el" tipo " de $ var. ": Eso está mal, porque mientras no asignes algo a la variable, nada lo cambiará. "No se puede usar strval() en matrices ni en objetos que no implementen el método __toString". Eso es correcto, pero eso también se aplica al '(string)' -cast. Por lo tanto, no es diferente aquí. – KingCrunch
Me encuentro corregido. He ajustado mi respuesta para ser más preciso. La documentación en la página de tipo boolean usa la frase "explícitamente convertir", así que tomé eso como que significaba que el tipo de $ var se estaba cambiando, pero se requiere una llamada a settype() para eso. –
¿podría proporcionar un enlace al manual del que está hablando? – Pacerier
El casteo y la conversión en realidad son los mismos, pero la conversión es mucho más lento en comparación. Aquí hay un punto de referencia, que también tiene en cuenta la concatenación y la interpolación: http://leifw.wickland.net/2009/08/performance-of-converting-integer-to.html –