Primeros pasos con PHP

Ya sabes programar; ahora toca mudarse de lenguaje

Marco González Luengo

Tabla de contenidos
  1. Dónde probar el código
  2. Lo mismo, dos veces
  3. Mostrar cosas en pantalla
  4. Comentarios
  5. Si vienes de Python
  6. Para tener a mano

El lenguaje de este ramo es PHP 8.5. Si llegaste hasta aquí ya sabes programar (en Python, seguramente), así que esto no es aprender de nuevo: es mudarse de lenguaje. La mayoría de las ideas son las mismas; lo que cambia es la sintaxis y un par de mañas.

Dónde probar el código

En ninguno de los dos primeros hay input(), así que los datos van escritos en el mismo código.

Lo mismo, dos veces

Un programa en Python que ya sabrías escribir:

nombre = "Ana"
notas = [6.0, 5.5, 4.8]

for n in notas:
    print(f"Nota: {n}")

def promedio(ns: list) -> float:
    return sum(ns) / len(ns)

print(nombre, promedio(notas))

Y el mismo programa en PHP:

<?php
declare(strict_types=1);

$nombre = "Ana";
$notas = [6.0, 5.5, 4.8];

foreach ($notas as $n) {
    echo "Nota: {$n}\n";
}

function promedio(array $ns): float {
    return array_sum($ns) / count($ns);
}

echo $nombre, " ", promedio($notas), "\n";

Lo único realmente nuevo:

¿Y el declare(strict_types=1)? Hace que PHP se tome en serio los tipos. Lo vemos con calma en Funciones; por ahora, ponlo siempre en la primera línea.

Mostrar cosas en pantalla

Hay tres formas que vas a usar todo el tiempo:

<?php
$notas = [6.3, 4.8, 6.1];

echo "Hola", PHP_EOL;  // PHP_EOL es un salto de línea
print_r($notas);
var_dump($notas);

Y a veces no muestran lo mismo:

<?php
declare(strict_types=1);

function promedio(array $ns): float {
    return array_sum($ns) / count($ns);
}

$mi_promedio = promedio([6.3, 4.8, 6.1, 2.0, 6.9]);

echo $mi_promedio, PHP_EOL;
var_dump($mi_promedio);

echo redondea para mostrar; var_dump muestra el valor real, con todo y el error de precisión que tienen los números de punto flotante en cualquier lenguaje (en Python también pasa).

Comentarios

<?php
// Comentario de una línea
# También de una línea, pero casi no se usa

/*
   Comentario de
   varias líneas
*/

echo "Los comentarios no se ejecutan", PHP_EOL;

Un truco útil para probar: comentar un bloque entero con /* */ y descomentarlo de a poco. Más en el manual.

Si vienes de Python

Aquí es donde la intuición de Python te va a hacer perder tiempo. Cada una se explica en su tema:

En Python En PHP La trampa
"a" + "b" "a" . "b" El + suma números o une arrays, pero nunca concatena texto. Ver Texto.
"0" == False es falso "0" == false es verdadero == convierte tipos antes de comparar. Usa ===. Ver Decisiones y ciclos.
elif, and, not elseif, &&, ! and y or existen, pero con otra precedencia. Ver Decisiones y ciclos.
d["x"] lanza KeyError $d["x"] avisa y da null El programa no se detiene. Ver Arrays.
Una función lee variables globales Una función no ve nada de afuera Todo entra por parámetro. Ver Funciones.
Una función que hace lista.append() cambia la lista original Una función que agrega a un array cambia su copia Los arrays se pasan por valor. Ver Parámetros por referencia.

La cuarta es la que más muerde: en Python el programa se cae; en PHP sigue con un null adentro, y el error aparece mucho después.

Para tener a mano

El manual de PHP en español es bueno de verdad. Cada función tiene su página con ejemplos, y en este sitio vamos a enlazarlo seguido.


Sigue con Texto.