Introducción
PHP es un lenguaje débilmente tipado, aunque en la versión 7 incorporó la revisión de tipos en las funciones el lenguaje en sí lo sigue siendo.
Una de las ventajas de esto es que podemos castear o cambiar el tipo de una variable sin dificultad.
Lo que nos reúne hoy aquí son dos funciones que…
- Convierten un valor a entero
- Convierten un valor a cadena
Dichas funciones son intval
y strval
Intval en PHP: convertir string o cualquier tipo a entero
La función intval
en PHP recibe un argumento de cualquier tipo y devuelve su representación como entero.
Su uso más frecuente es cuando queremos convertir una cadena a un entero:
<?php
$cadena = "123";
$entero = intval($cadena); #Ahora $entero es un verdadero entero
A lo que regresa ya podemos sumarle o restarle cosas, o hacerle cualquier operación matemática, pues tenemos la certeza de que es un entero.
Quitar decimales con intval
Con esta función igualmente podemos quitar los decimales de un número (como lo hicimos con JavaScript). Llamamos a la función y le pasamos un flotante.
<?php
$flotante = 2.999;
$sinDecimales = intval($flotante);
echo $sinDecimales; # Imprime 2
La salida es 2. No importa si el número es 2.9 o 2.1, lo devuelve sin decimales. Incluso con 2.0001 devuelve 2.
Convertir binario a decimal con PHP e intval
Dado que intval
devuelve la representación entera de un número, y como segundo argumento recibe la base, podemos fácilmente llamarlo para que convierta un número binario a un decimal. Quedaría así:
<?php
$binario = "1101"; # El 13 en binario
# Con el 2 indicamos que la cadena que le pasamos está en base 2
$decimal = intval($binario, 2);
echo $decimal; # Imprime 13
La salida sería 13. Así de fácil sería convertir un binario a un decimal; es decir, un número en base 2 a base 10.
Strval en PHP: convertir cualquier variable en cadena
Este método es más fácil de explicar. Lo único que hace es obtener la representación de una variable, pero como string. Veamos esto:
<?php
$entero = 15000;
$string = strval($entero);
echo $string;
Lo que devuelve strval
es una cadena a la cual podemos aplicarle los métodos de cadenas, y podremos estar seguros de que estamos trabajando con un string para evitar comportamientos raros.
Strval en arreglos
Esta función no imprime arreglos, regresará simplemente la cadena “Array” o en versiones nuevas generará un error de que estamos intentando convertir un array a una cadena.
Si realmente queremos imprimir un arreglo usamos print_r
:
<?php
$arreglo = array(1, 2, 3);
print_r($arreglo);
?>
La salida es esta:
Strval en objetos
La función strval
, al usarla en objetos, llamará al método __toString
del mismo. Si no lo implementa, regresará la cadena “Object” o generará un error en las versiones más nuevas.
Para implementar el método __toString
en un objeto podemos declararlo en la clase:
<?php
class Mascota{
var $nombre;
public function __construct($nombre){
$this->nombre = $nombre;
}
public function ladrar(){
echo "¡Guau!";
}
public function __toString(){
return "Soy de la clase mascota. Mi nombre es " . $this->nombre;
}
}
Ahí tenemos a la clase mascota que únicamente tiene la propiedad nombre y el método ladrar, aunque eso no es lo importante; lo que importa es que implementa el método __toString
.
Podemos implementarlo como queramos, siempre y cuando regrese una cadena. Por cierto, se recomienda devolver el estado de la mascota; es decir, concatenar todas sus variables.
El punto es que al llamar a strval
y pasarle nuestra mascota así:
<?php
class Mascota{
var $nombre;
public function __construct($nombre){
$this->nombre = $nombre;
}
public function ladrar(){
echo "¡Guau!";
}
public function __toString(){
return "Soy de la clase mascota. Mi nombre es " . $this->nombre;
}
}
$maggie = new Mascota("Maggie");
echo strval($maggie);
?>
El resultado no es “Object” ni un error, es:
Soy de la clase mascota. Mi nombre es Maggie
Algo más
También existen las funciones floatval y boolval para convertir variables a flotantes y booleanos respectivamente.
Pingback: Funciones con chequeo de tipos en PHP 7 - Parzibyte's blog