Ejercicios de PHP

Objetivo

Practicar los elementos básicos de la sintaxis de PHP —variables, tipos de datos, operadores, comentarios, directivas, estructuras de decisión, bucles, arrays y funciones— mediante una colección de ejercicios de dificultad creciente.

Indicaciones generales

Ejercicios

1. Saludo simple

Crea un archivo saludo.php que defina una variable $nombre con tu nombre y muestre por pantalla un saludo del tipo «Hola, Ana. Bienvenido a PHP».

Contenidos: variables, cadenas, echo.

2. Ficha personal

Define variables para el nombre, la edad, la altura y si la persona es alumno o no. Muestra una ficha con esos datos en una lista HTML. Indica el tipo de cada variable usando gettype() o var_dump().

Contenidos: variables, tipos de datos, concatenación, HTML embebido.

3. Operaciones aritméticas

Dados dos números enteros almacenados en variables, muestra su suma, resta, multiplicación, división, resto y potencia. Muestra también el resultado de comparar si el primero es mayor que el segundo.

Contenidos: operadores aritméticos, operadores de comparación.

4. Conversión de tipos

Partiendo de las cadenas "123", "3.14" y "abc", conviértelas a entero y a flotante usando casting. Muestra el valor y el tipo resultante en cada caso. Comenta brevemente qué ocurre con la cadena no numérica.

Contenidos: tipos de datos, conversión de tipos, comentarios.

5. Calculadora de IVA

Define una variable con el precio de un producto sin IVA y otra con el porcentaje de IVA. Calcula y muestra el importe del IVA y el precio final. Usa operadores de asignación compuesta donde tenga sentido.

Contenidos: operadores aritméticos y de asignación, variables.

6. Par o impar

Dado un número entero en una variable, indica si es par o impar. Después, modifica el valor de la variable para comprobar que el programa sigue funcionando.

Contenidos: operador módulo, if...else.

7. Calificación cualitativa

Dada una nota numérica entre 0 y 10, muestra la calificación correspondiente: insuficiente, suficiente, bien, notable o sobresaliente. Resuélvelo primero con if...elseif...else y después con switch o match.

Contenidos: estructuras de decisión.

8. Día de la semana

Dado un número del 1 al 7 en una variable, muestra el nombre del día correspondiente. Si el número está fuera de rango, muestra un mensaje de error. Resuélvelo con switch.

Contenidos: switch, operadores lógicos.

9. Tabla de multiplicar

Dado un número entero, muestra su tabla de multiplicar del 1 al 10 dentro de una tabla HTML. Usa un bucle for.

Contenidos: bucles, HTML embebido.

10. Suma acumulada

Calcula la suma de todos los números enteros del 1 al 100 usando un bucle while. Después, repite el cálculo con un bucle for y comprueba que el resultado coincide.

Contenidos: bucles while y for, operadores de asignación.

11. Números pares hasta N

Dado un número entero N, muestra todos los números pares desde 0 hasta N separados por comas. Usa un bucle y la estructura de control continue para saltar los impares.

Contenidos: bucles, continue, operador módulo.

12. Cuenta atrás con do...while

Muestra una cuenta atrás desde 10 hasta 1 usando un bucle do...while. Al finalizar, muestra el mensaje «¡Despegue!».

Contenidos: bucle do...while.

13. Recorrer un array indexado

Crea un array con al menos cinco nombres de frutas. Recórrelo con foreach y muestra cada fruta en un elemento de una lista HTML. Indica también el número total de frutas con count().

Contenidos: arrays indexados, foreach, count().

14. Array asociativo de un alumno

Crea un array asociativo con los datos de un alumno: nombre, edad, ciclo y nota media. Recórrelo con foreach mostrando cada clave y su valor en una tabla HTML de dos columnas.

Contenidos: arrays asociativos, foreach con clave y valor.

15. Estadísticas de un array numérico

Dado un array de números enteros, calcula y muestra el máximo, el mínimo, la suma y la media. Puedes usar las funciones max(), min(), array_sum() y count().

Contenidos: arrays, funciones de arrays, operadores aritméticos.

16. Array multidimensional

Crea un array multidimensional con al menos tres alumnos, cada uno con nombre, edad y nota. Recórrelo con foreach anidados y muestra los datos en una tabla HTML con una fila por alumno.

Contenidos: arrays multidimensionales, foreach anidados, HTML embebido.

17. Función de saludo

Crea una función saludar($nombre) que devuelva una cadena de saludo. Llámala con tres nombres distintos y muestra los resultados. Añade un valor por defecto para el parámetro.

Contenidos: funciones, parámetros, valores por defecto, return.

18. Funciones matemáticas

Crea tres funciones: esPar($n), factorial($n) y esPrimo($n). Cada una debe devolver un valor booleano o numérico. Pruébalas con varios valores y muestra los resultados en una lista.

Contenidos: funciones, bucles, estructuras de decisión, tipos de retorno.

19. Ámbito de variables

Crea un archivo con una variable global $contador inicializada a 0 y una función incrementar() que la incremente usando global. Llama a la función varias veces y muestra el valor final. Después, crea otra función con una variable static que cuente cuántas veces se ha llamado y compárala con la anterior.

Contenidos: ámbito de variables, global, static.

20. Mini aplicación integradora

Crea un archivo datos.php que contenga un array multidimensional con información de varios productos (nombre, precio, stock y categoría). En otro archivo informe.php, inclúyelo con require y genera un informe HTML que:

  1. Muestre todos los productos en una tabla.
  2. Indique cuáles están agotados (stock igual a 0).
  3. Calcule el valor total del inventario (precio × stock).
  4. Muestre el producto más caro y el más barato usando funciones propias.
  5. Agrupe los productos por categoría usando un array asociativo construido con un bucle.

Contenidos: todos los anteriores y .

21. Función con parámetros por referencia

Crea una función intercambiar(&$a, &$b) que intercambie el valor de dos variables pasadas por referencia. Después de llamarla, comprueba que los valores originales han cambiado.

Contenidos: funciones, paso por referencia, variables.

22. Función que devuelve múltiples valores

Crea una función estadisticas(array $numeros) que devuelva un array asociativo con el mínimo, el máximo, la suma y la media de un array de números. Si el array está vacío, la función debe lanzar una excepción. Llámala y muestra el resultado.

Contenidos: funciones, arrays, throw, excepciones.

23. Función recursiva con control de errores

Crea una función recursiva factorial($n) que calcule el factorial de un número entero. La función debe lanzar una excepción si el número es negativo o si supera un límite razonable (por ejemplo, 20). Captura la excepción y muestra el mensaje correspondiente.

Contenidos: funciones recursivas, estructuras de decisión, excepciones.

24. Función que valida datos con excepciones personalizadas

Crea una excepción personalizada ErrorDeValidacion y una función validarAlumno($nombre, $edad, $nota) que compruebe que el nombre no está vacío, que la edad está entre 0 y 120 y que la nota está entre 0 y 10. Si algún dato no es válido, lanza la excepción con un mensaje descriptivo. Prueba la función con datos correctos e incorrectos.

Contenidos: excepciones personalizadas, funciones, operadores lógicos, validación de datos.

25. Función con limpieza de recursos en finally

Crea una función leerArchivo($ruta) que intente abrir un archivo con fopen() y leer su contenido línea a línea. Si el archivo no existe, lanza una excepción. Usa un bloque finally para garantizar que el archivo se cierra con fclose() si se llegó a abrir. Prueba la función con un archivo existente y con una ruta inexistente.

Contenidos: funciones, manejo de archivos básico, try...catch...finally, excepciones.

26. Suma de traza

Crea una función sumar_traza que reciba una matriz bidimensional de números y devuelva la suma de los elementos de su diagonal principal (desde arriba a la izquierda hasta abajo a la derecha). Si algún elemento de la diagonal no fuera de tipo numérico, la función lanzará una excepción.

Contenidos: todos los anteriores: variables, tipos, operadores, directivas, estructuras de decisión, bucles, arrays, funciones e inclusión de archivos.

27. Totalizar Matriz

Crea una función totalizar que reciba una matriz bidimensional de números y devuelva otra matriz (sin modificar la original) con una columna adicional en la que figurará la suma de cada fila y una fila adicional en la que figurará la suma de cada columna. Si algún elemento de la matriz no fuera de tipo numérico, la función lanzará una excepción.

Contenidos: todos los anteriores: variables, tipos, operadores, directivas, estructuras de decisión, bucles, arrays, funciones e inclusión de archivos.

28. Extraer Submatriz

Crea una función extraer que reciba una matriz bidimensional y un array con dos coordenadas, cada una formada por un array de dos números enteros. La función devolverá la submatriz indicada por las coordenadas. Así, si la matriz recibida es de 4 filas y 5 columnas y la matriz de coordenadas recibida es [[0,2],[2,4]] la función deberá devolver la submatriz formada por los elementos que están desde la primera fila (0), tercera columna (2) hasta la tercera fila (2) y quinta columna (4). Si las coordenadas no fueran correctas (fuera de la matriz) la función lanzará una excepción..

Contenidos: todos los anteriores: variables, tipos, operadores, directivas, estructuras de decisión, bucles, arrays, funciones e inclusión de archivos.

Bibliografía