string: texto
Va entre comillas: 'Ana',
'CC-1053'.
Un número entre comillas también es texto. El teléfono y la cédula se guardan como texto: nunca vas a sumarlos, y guardarlos como número borra el cero de la izquierda.
Terminas una compra y la pantalla dice: «Listo, Ana. Tu pedido por $84.500 llegará el viernes». Esa frase no está escrita en ningún archivo. Está escrita con huecos, y el servidor rellena los huecos con los datos de quien compró.
Cada hueco es una variable: un nombre que le pones a un dato para poder usarlo más adelante sin repetirlo.
<?php
$nombre = 'Ana';
$total = 84500;
echo 'Listo, ';
echo $nombre;Listo, Ana
El signo = no significa «es igual a»: significa «guarda
esto aquí». Se lee de derecha a izquierda. Y a partir de esa línea, cada vez
que escribas $nombre, PHP pone Ana en su lugar.
El nombre de una variable distingue mayúsculas de minúsculas.
$nombre, $Nombre y $NOMBRE son tres variables
distintas, y PHP no te avisa: simplemente la que escribiste mal está vacía.
Empieza siempre con $, sigue con una letra o un guión bajo, y no lleva
espacios ni tildes. Escoge un estilo -$totalPedido o
$total_pedido- y no lo mezcles.
Va entre comillas: 'Ana',
'CC-1053'.
Un número entre comillas también es texto. El teléfono y la cédula se guardan como texto: nunca vas a sumarlos, y guardarlos como número borra el cero de la izquierda.
84500 es entero y 19.5 es decimal.
Van sin comillas, sin puntos de miles y con punto decimal, no con coma. Los separadores son para mostrar, no para calcular.
Solo dos valores: true y false.
Es el tipo de las preguntas: ¿el pedido está pagado?, ¿el usuario es administrador? Sobre esto se construye toda la lección 3.
null significa vacío de verdad: aquí no
hay nada.
No es lo mismo que 0 ni que el texto vacío. «No dejó teléfono»
y «su teléfono es 0» son cosas distintas.
Cuando algo no cuadra, no adivines el contenido de una variable: pregúntaselo
a PHP. var_dump() muestra el valor y su tipo, que suele ser
justo el dato que falta.
<?php
$cantidad = 3;
$precio = 19.5;
$activo = true;
$telefono = '3001234567';
var_dump($cantidad, $precio, $activo, $telefono);int(3) float(19.5) bool(true) string(10) "3001234567"
Fíjate en la última línea: string(10). El teléfono es texto de
diez caracteres, no un número. Y eso es exactamente lo que queremos.
Aquí está la primera trampa de verdad del lenguaje, y conviene aprenderla hoy porque produce un error que no da error: la página sale, pero dice una cosa rara.
En PHP, las comillas dobles miran dentro del texto y sustituyen las variables por su valor. Las comillas simples no miran nada: imprimen exactamente lo que hay escrito.
<?php
$nombre = 'Ana';
echo "Hola, $nombre";
echo "\n";
echo 'Hola, $nombre';Hola, Ana Hola, $nombre
Esa segunda línea es la que aparece publicada en internet más veces de lo que parece. No hay error, no hay aviso: PHP hizo exactamente lo que se le pidió.
Regla práctica: comillas simples por defecto -son más rápidas de leer y no esconden sorpresas- y comillas dobles solo cuando quieras meter una variable dentro del texto.
Dentro de comillas dobles, PHP toma como nombre de la variable todas las
letras que siguen al $. Si escribes "Van $cantidadunidades",
PHP busca una variable llamada $cantidadunidades, no la encuentra y te deja
un hueco.
La solución son las llaves, que marcan dónde termina el nombre:
<?php
$cantidad = 3;
echo "Van {$cantidad}unidades";Van 3unidades
En tutoriales viejos verás ${nombre}, con el dólar fuera de las
llaves. Esa forma está deprecada desde PHP 8.2 y la propia
documentación oficial recomienda usar {$nombre} en su lugar. Deprecado
quiere decir que todavía funciona, avisa, y en alguna versión futura dejará de
funcionar.
Es un buen ejemplo de por qué se contrasta con la documentación oficial y no con el primer resultado de una búsqueda.
La otra forma de armar una frase es unir trozos con un punto.
En PHP el + es solo para sumar números; para pegar texto se usa
., y esa es una diferencia que arrastra quien viene de otros
lenguajes.
<?php
$nombre = 'Ana';
$total = 84500;
$mensaje = 'Listo, ' . $nombre . '. Total: $' . number_format($total, 0, ',', '.');
echo $mensaje;
$mensaje .= ' Gracias por tu compra.';
echo "\n" . $mensaje;Listo, Ana. Total: $84.500 Listo, Ana. Total: $84.500 Gracias por tu compra.
Dos cosas de esa línea. .= significa «añade esto al final de lo
que ya había», y ahorra escribir $mensaje = $mensaje . ....
Y number_format() es la respuesta a la pregunta que ya te estabas
haciendo: el número se guarda pelado y se muestra con
sus separadores. Los tres argumentos son cuántos decimales, qué carácter usar para los
decimales y cuál para los miles: en Colombia, coma y punto.
$precio = 19,5; no es un decimal para PHP: la coma separa
argumentos. Se escribe 19.5, con punto, siempre.
La coma decimal es una convención para mostrar, y de eso se encarga
number_format() al final.
Depende de si ese texto parece un número. "5" + 2 da
7: PHP convierte la cadena numérica.
Pero desde PHP 8.0, si el texto no tiene nada de número
-"abc" + 2- se lanza un TypeError y el programa se
detiene. Y algo como "10 cajas" + 2 da 12 con un aviso. Antes de
PHP 8 todo esto pasaba en silencio, que es como se colaban los errores de
cálculo.
Eso es una constante: const IVA = 0.19; o
define('IVA', 0.19);. Se escribe sin $, por
convención en mayúsculas, y si intentas reasignarla PHP protesta.
Sirve para lo que es una regla y no un dato: el IVA, el nombre del sitio, la ruta de las imágenes.
Estás usando una variable que no existe todavía: casi siempre es un nombre mal escrito o una mayúscula de más. PHP lo avisa y sigue, dejando el hueco vacío.
Léelo siempre: ese aviso es la pista, no una molestia. Y en un sitio publicado los avisos no se muestran al visitante, se escriben en un archivo de registro.
Arrastra el tipo que le corresponde a cada dato, o toca el tipo y luego su espacio.
1053792 tal como se guarda para
imprimirlo en una factura, sin perder ceros a la izquierda.3 unidades que el cliente puso en el carrito y
que hay que multiplicar por el precio.0.19 del IVA, que tiene decimales.Tienes $ciudad = 'Bogotá'; y escribes
echo 'Envío a $ciudad'; con comillas simples. ¿Qué sale en
pantalla?
¿Por qué el teléfono de un cliente se guarda como texto y no como número?
En un tutorial encuentras "Hola ${nombre}". ¿Qué haces?
${var} como deprecado
desde PHP 8.2 y recomienda {$var}. Con comillas simples no se
sustituiría nada.Ya puedes guardar datos y mostrarlos. Pero una página útil no muestra siempre lo mismo: cambia según el dato. En la siguiente lección la página empieza a decidir -mostrar «agotado» o el botón de comprar- y a repetir sin que tú escribas cien veces lo mismo.
Siguiente: Decidir y repetir
Continuar ← Qué es PHP y dónde se ejecuta