Skip to content

Sintaxis, variables y tipos ​

Aquí escribirás tus primeros scripts de verdad. Aprenderás las reglas básicas de sintaxis, cómo guardar datos en variables, qué tipos de datos existen en PHP y cómo activar el modo estricto para escribir código más confiable.

Concepto ​

Reglas básicas de sintaxis ​

  • El código PHP va dentro de <?php ... ?>.
  • Cada instrucción termina en punto y coma ;.
  • Las variables empiezan con $: $precio, $nombreCliente.
  • Los nombres de variables distinguen mayúsculas: $total y $Total son distintas.
  • Las funciones y palabras clave no distinguen mayúsculas (echo = ECHO), pero escribe todo en minúsculas por convención.
  • Comentarios:
php
<?php
// Comentario de una línea
# También de una línea (menos usado)
/*
   Comentario
   de varias líneas
*/

/**
 * Comentario de documentación (DocBlock).
 * Lo usan los editores para mostrarte ayuda.
 */

Variables: cajas con etiqueta ​

Una variable es como una caja con una etiqueta: la etiqueta es el nombre ($edad) y dentro guardas un valor (25). Puedes cambiar el contenido cuando quieras.

php
<?php
$edad = 25;          // Guardamos 25
$edad = $edad + 1;   // Ahora vale 26
echo $edad;          // 26

En PHP no necesitas declarar el tipo: se deduce del valor (tipado dinámico). Convenciones de nombres:

  • camelCase para variables y funciones: $precioFinal, calcularIva().
  • PascalCase para clases: Producto.
  • MAYUSCULAS_CON_GUION para constantes: IVA, MAX_INTENTOS.

Constantes ​

Valores que no cambian durante la ejecución. No llevan $.

php
<?php
const IVA = 0.16;                 // Forma moderna (recomendada)
define('NOMBRE_SITIO', 'Mi Tienda'); // Forma clásica, útil dentro de condiciones

echo IVA;          // 0.16
echo NOMBRE_SITIO; // Mi Tienda
// IVA = 0.20;     // Error: no se puede reasignar una constante

Tipos de datos ​

TipoEjemploPara qué
int42, -7, 1_000_000Números enteros
float3.14, 0.16, 1.5e3Números con decimales
string'hola', "Ana"Texto
booltrue, falseSí/no
array[1, 2, 3], ['nombre' => 'Ana']Listas y diccionarios
nullnull"Sin valor"
objectnew DateTime()Instancias de clases
callablefn($x) => $x * 2Funciones guardadas en variables
php
<?php
$cantidad   = 3;              // int
$precio     = 199.90;         // float
$producto   = 'Playera';      // string
$disponible = true;           // bool
$tallas     = ['S', 'M', 'L'];// array
$descuento  = null;           // null (aún no hay descuento)

// var_dump muestra tipo y valor: tu mejor amigo para depurar
var_dump($cantidad);    // int(3)
var_dump($precio);      // float(199.9)
var_dump($producto);    // string(7) "Playera"
var_dump($disponible);  // bool(true)
var_dump($descuento);   // NULL

// gettype devuelve el tipo como texto
echo gettype($tallas);  // array

Mostrar datos: echo, print, print_r, var_dump ​

php
<?php
$nombre = 'Luis';
$datos = ['edad' => 30, 'ciudad' => 'Guadalajara'];

echo "Hola, $nombre";    // Imprime texto. Lo más usado.
echo 'A', 'B', 'C';      // echo acepta varios argumentos: ABC

print_r($datos);         // Muestra arrays de forma legible
// Array ( [edad] => 30 [ciudad] => Guadalajara )

var_dump($datos);        // Igual pero con tipos: ideal para depurar

// Truco: <pre> conserva los saltos de línea en el navegador
echo '<pre>';
print_r($datos);
echo '</pre>';

Comillas simples vs dobles ​

php
<?php
$nombre = 'Ana';

echo 'Hola, $nombre';   // Hola, $nombre   → simples: texto literal
echo "Hola, $nombre";   // Hola, Ana       → dobles: interpolan variables
echo "Línea 1\nLínea 2"; // \n es salto de línea sólo con comillas dobles
echo 'Hola, ' . $nombre; // El punto . concatena (une) strings

Lo verás a fondo en la lección de strings.

Conversión de tipos ​

PHP convierte tipos automáticamente cuando lo cree necesario (type juggling). A veces es cómodo; otras, peligroso.

php
<?php
var_dump('5' + 3);      // int(8)    → el string '5' se convierte en número
var_dump('5' . 3);      // string(2) "53" → el punto concatena
var_dump(10 / 4);       // float(2.5)
var_dump(intdiv(10, 4));// int(2)    → división entera

// Conversión explícita (casting): lo recomendable
$edad = (int) '25 años'; // 25 (toma los dígitos iniciales)
$precio = (float) '19.99';
$texto = (string) 100;
$activo = (bool) 0;      // false

// Valores que se consideran false: false, 0, 0.0, '', '0', [], null
var_dump((bool) '0');    // bool(false)  ¡cuidado!
var_dump((bool) 'false');// bool(true)   un string no vacío es true

Comprobar tipos ​

php
<?php
$valor = '42';

var_dump(is_int($valor));      // false (es string)
var_dump(is_numeric($valor));  // true  (parece número)
var_dump(is_string($valor));   // true
var_dump(is_array([]));        // true
var_dump(is_null(null));       // true
var_dump(isset($noExiste));    // false: ¿existe y no es null?
var_dump(empty(''));           // true: ¿está "vacío"? ('' , 0, null, [], '0')

Modo estricto: declare(strict_types=1) ​

Por defecto, si una función espera un int y le pasas '5', PHP lo convierte en silencio. Con el modo estricto, lanza un error. Esto atrapa bugs pronto.

php
<?php
declare(strict_types=1); // Debe ser la PRIMERA instrucción del archivo

function duplicar(int $numero): int
{
    return $numero * 2;
}

echo duplicar(5);    // 10
echo duplicar('5');  // TypeError: debe ser int, se dio string

Buena práctica

Empieza todos tus archivos sólo-PHP con declare(strict_types=1);. Es estándar en proyectos profesionales y en Laravel moderno.

Ejemplo completo: ficha de producto ​

php
<?php
declare(strict_types=1);

// Datos del producto
const IVA = 0.16;
$nombre     = 'Audífonos Bluetooth';
$precioBase = 850.00;   // float
$stock      = 12;       // int
$enOferta   = true;     // bool
$descuento  = 0.10;     // 10 %

// Cálculos
$precioConDescuento = $enOferta ? $precioBase * (1 - $descuento) : $precioBase;
$precioFinal = $precioConDescuento * (1 + IVA);

// number_format(numero, decimales, separador decimal, separador de miles)
$precioTexto = number_format($precioFinal, 2, '.', ',');
?>
<!DOCTYPE html>
<html lang="es">
<head><meta charset="UTF-8"><title><?= $nombre ?></title></head>
<body>
    <h1><?= $nombre ?></h1>
    <p>Precio final (IVA incluido): $<?= $precioTexto ?> MXN</p>
    <p>Stock disponible: <?= $stock ?> piezas</p>
    <?php if ($enOferta): ?>
        <p><strong>¡En oferta! <?= $descuento * 100 ?> % de descuento</strong></p>
    <?php endif; ?>
</body>
</html>

Error común

Olvidar el ; produce Parse error: syntax error, unexpected ... y el error suele señalar la línea siguiente a donde falta. Si el error marca la línea 8, revisa también la 7.

Error común

Usar una variable que no existe: Warning: Undefined variable $totl. Casi siempre es un error de escritura. Activa error_reporting = E_ALL para verlos todos.

Ejercicios ​

  1. Declara variables para tu nombre, edad, estatura (en metros) y si te gusta programar. Muestra cada una con var_dump.
  2. Crea un script que convierta grados Celsius a Fahrenheit (F = C × 9/5 + 32) para 25 °C y muestre el resultado con un decimal.
  3. Predice el resultado de: var_dump((int) '3.9');, var_dump('10' == '1e1');, var_dump((bool) []);. Luego compruébalo.
Ver solución
php
<?php
declare(strict_types=1);

$nombre = 'Erick';
$edad = 20;
$estatura = 1.75;
$meGustaProgramar = true;

var_dump($nombre, $edad, $estatura, $meGustaProgramar);
// string(5) "Erick" int(20) float(1.75) bool(true)
php
<?php
declare(strict_types=1);

$celsius = 25;
$fahrenheit = $celsius * 9 / 5 + 32;

echo "$celsius °C = " . number_format($fahrenheit, 1) . " °F"; // 25 °C = 77.0 °F
  • (int) '3.9' → int(3): el cast a entero trunca, no redondea.
  • '10' == '1e1' → bool(true): dos strings numéricos se comparan como números (1e1 = 10). Por eso usaremos ===.
  • (bool) [] → bool(false): un array vacío es falso.

Resumen ​

  • Las instrucciones terminan en ; y las variables empiezan con $.
  • Tipos principales: int, float, string, bool, array, null, object.
  • var_dump() muestra tipo y valor; úsalo para depurar.
  • Comillas dobles interpolan variables; simples no.
  • Convierte tipos explícitamente con (int), (float), (string), (bool).
  • Usa declare(strict_types=1); al inicio de tus archivos.
  • Constantes con const NOMBRE = valor;, sin $.

Academia Web — aprende, copia y construye.