0Pricing
PHP Academy · Lección

Conversión automática y conversión explícita de tipos

Comprenda cómo PHP convierte automáticamente entre tipos y cómo realizar conversiones manualmente.

Conversión automática y conversión explícita de tipos es una lección gratuita de PHP Academy en CoddyKit. Esta es la lección 4 de 4. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de PHP Academy, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de PHP Academy incluye 4 lecciones en total.

¿Qué es el type juggling?

El type juggling significa que PHP convierte automáticamente el tipo de un valor cuando un operador o una función requiere otro tipo.

Esto resulta práctico, pero puede causar errores sutiles si no comprende las reglas.

Conversión automática de tipos en aritmética

PHP convierte las cadenas en números cuando se utilizan en un contexto aritmético:

<?php
echo '5' + 3;       // 8  — string '5' becomes int 5
echo '5.5' + 1.5;   // 7  — string '5.5' becomes float
echo '5 cats' + 1;  // 6  — leading numeric part used, rest ignored
echo 'cats' + 1;    // 1  — non-numeric string becomes 0

Comparación flexible ==

El operador == compara los valores después de la conversión automática de tipos, lo que puede producir resultados sorprendentes:

<?php
var_dump(0 == 'a');      // true in PHP 7 (both become 0)
                          // false in PHP 8 (improved rules!)
var_dump('' == false);   // true
var_dump('1' == true);   // true
var_dump(null == false); // true

Comparación estricta ===

Utilice siempre === para comparar tanto el valor como el tipo; no se produce ninguna conversión automática:

<?php
var_dump(1 === '1');   // false — different types
var_dump(1 === 1);     // true
var_dump(null === false); // false
var_dump(0 === false); // false

// Rule of thumb: prefer === unless you explicitly need type coercion

Conversión explícita de tipos

Convierta un valor a un tipo específico anteponiendo (type):

<?php
$str = '42.7';

$int   = (int)    $str;  // 42
$float = (float)  $str;  // 42.7
$bool  = (bool)   $str;  // true
$arr   = (array)  $str;  // ['42.7']

echo $int;   // 42
echo $float; // 42.7

Función settype()

settype() cambia el tipo de una variable directamente y devuelve true/false:

<?php
$value = '123';
settype($value, 'integer');

var_dump($value); // int(123)

// Alternative: intval(), floatval(), strval() functions
$n = intval('0xFF', 16); // 255 — parse hex string

Casos límite al convertir cadenas en números

Reglas clave que aplica PHP al convertir cadenas en números:

  • Se ignoran los espacios en blanco iniciales: ' 42 ' → 42
  • Prefijo no numérico: 'php8' → 0 (aviso de PHP 8)
  • Notación científica: '1e3' → 1000.0
  • Cadenas hexadecimales: '0x1A' NO se convierten automáticamente en int en PHP 7+

Reglas de conversión a booleano

Estos valores se convierten en false; todos los demás se convierten en true:

<?php
$falsy = [false, 0, 0.0, '', '0', [], null];

foreach ($falsy as $v) {
    var_dump((bool) $v); // all bool(false)
}

// Careful:
var_dump((bool) '0');   // false — the STRING '0' is falsy!
var_dump((bool) '00');  // true  — only exactly '0' is falsy

intval() con bases

intval() acepta un parámetro de base opcional para analizar cadenas numéricas:

<?php
echo intval('0b1010', 2);  // 10  — binary
echo intval('077', 8);     // 63  — octal
echo intval('1F', 16);     // 31  — hexadecimal
echo intval('42');         // 42  — decimal (default base 10)

Mejoras en la conversión automática de tipos en PHP 8

PHP 8 corrigió algunas conversiones automáticas de tipos incoherentes de versiones anteriores:

  • 0 == 'foo' ahora es false (en PHP 7 era true)
  • Al comparar números con cadenas no numéricas, la cadena ya no se convierte en 0
  • Esto hace que PHP 8 sea más seguro, pero puede romper código heredado que dependa del comportamiento anterior

Cómo evitar errores por conversión automática de tipos

Buenas prácticas para evitar sorpresas causadas por la conversión automática de tipos:

<?php
declare(strict_types=1);  // enforce types at function boundaries

// Always use === for comparisons
if ($status === 'active') { /* safe */ }

// Cast explicitly before arithmetic
$total = (float) $_POST['price'] * (int) $_POST['qty'];

// Validate with filter_var
$age = filter_var($_POST['age'], FILTER_VALIDATE_INT);
if ($age === false) { /* invalid input */ }

Comprobación rápida

¿A qué valor se evalúa (int) '42abc' en PHP?

Resumen: conversión automática de tipos

Esto es lo que ha aprendido sobre el manejo de tipos en PHP:

  • PHP convierte automáticamente los tipos en las operaciones; esto se denomina conversión automática de tipos
  • == compara después de convertir los tipos; === realiza una comparación estricta (tipo + valor)
  • Realice conversiones explícitas con (int), (float), (string) y (bool)
  • Utilice intval(), floatval() y strval() como alternativas mediante funciones
  • PHP 8 mejoró algunos casos límite de la conversión automática de tipos
  • Active strict_types=1 para reducir las sorpresas en su código

Preguntas frecuentes

¿La lección «Conversión automática y conversión explícita de tipos» es gratis?

Sí — el texto completo de «Conversión automática y conversión explícita de tipos» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de PHP Academy, actualiza a CoddyKit PRO. El curso de PHP Academy incluye 4 lecciones en total.

¿Qué aprenderé en «Conversión automática y conversión explícita de tipos»?

Comprenda cómo PHP convierte automáticamente entre tipos y cómo realizar conversiones manualmente. Practicas PHP Academy con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.

¿Necesito experiencia previa para empezar PHP Academy?

No se requiere experiencia previa. PHP Academy en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 4 de 4.

¿Cuánto tiempo toma la lección «Conversión automática y conversión explícita de tipos»?

La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.

¿Puedo escribir y ejecutar código en esta lección de PHP Academy?

Sí. Cada lección de PHP Academy incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.

Todas las lecciones de este curso

  1. Declaración de variables en PHP
  2. Descripción general de los tipos de datos de PHP
  3. Salida con echo y print
  4. Conversión automática y conversión explícita de tipos
← Volver a PHP Academy