PHP: intval y strval para convertir variables

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…

  1. Convierten un valor a entero
  2. 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:

Imprimir arreglo en PHP
Imprimir arreglo en PHP

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.

Estoy aquí para ayudarte 🤝💻


Estoy aquí para ayudarte en todo lo que necesites. Si requieres alguna modificación en lo presentado en este post, deseas asistencia con tu tarea, proyecto o precisas desarrollar un software a medida, no dudes en contactarme. Estoy comprometido a brindarte el apoyo necesario para que logres tus objetivos. Mi correo es parzibyte(arroba)gmail.com, estoy como@parzibyte en Telegram o en mi página de contacto

No te pierdas ninguno de mis posts 🚀🔔

Suscríbete a mi canal de Telegram para recibir una notificación cuando escriba un nuevo tutorial de programación.

1 comentario en “PHP: intval y strval para convertir variables”

  1. Pingback: Funciones con chequeo de tipos en PHP 7 - Parzibyte's blog

Dejar un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *