20 ejercicios intermedios de PHP resueltos: arrays, funciones, formularios y PDO


Si ya dominás variables, condicionales, bucles y funciones, estos 20 ejercicios intermedios de PHP resueltos te van a ayudar a combinar conceptos y acercarte a problemas reales.

1. Filtrar números pares de un array

<?php
$numeros = [1,2,3,4,5,6,7,8];

$pares = array_filter($numeros, fn($n) => $n % 2 === 0);

print_r($pares);
?>

2. Ordenar productos por precio

<?php
$productos = [
    ['nombre' => 'Mouse', 'precio' => 15000],
    ['nombre' => 'Monitor', 'precio' => 180000],
    ['nombre' => 'Teclado', 'precio' => 25000]
];

usort($productos, fn($a, $b) => $a['precio'] <=> $b['precio']);

print_r($productos);
?>

3. Buscar un usuario por email

<?php
$usuarios = [
    ['nombre' => 'Ana', 'email' => 'ana@mail.com'],
    ['nombre' => 'Juan', 'email' => 'juan@mail.com']
];

$emailBuscado = 'juan@mail.com';

$resultado = array_filter($usuarios, fn($u) => $u['email'] === $emailBuscado);

print_r($resultado);
?>

4. Eliminar duplicados

<?php
$valores = [1,2,2,3,4,4,5];

$unicos = array_unique($valores);

print_r($unicos);
?>

5. Contar palabras de un texto

<?php
$texto = 'PHP es simple de aprender y muy utilizado';

echo str_word_count($texto);
?>

6. Validar un email

<?php
$email = 'usuario@email.com';

if (filter_var($email, FILTER_VALIDATE_EMAIL)) {
    echo 'Email válido';
} else {
    echo 'Email inválido';
}
?>

7. Validar un formulario POST

<?php
$nombre = trim($_POST['nombre'] ?? '');

if ($nombre === '') {
    echo 'El nombre es obligatorio';
}
?>

8. Mantener valores del formulario

<input
    type="text"
    name="nombre"
    value="<?= htmlspecialchars($_POST['nombre'] ?? '') ?>"
>

9. Generar una contraseña aleatoria

<?php
$caracteres = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789';
$password = '';

for ($i = 0; $i < 12; $i++) {
    $password .= $caracteres[random_int(0, strlen($caracteres) - 1)];
}

echo $password;
?>

10. Guardar una contraseña con password_hash()

<?php
$password = 'ClaveSegura123';

$hash = password_hash($password, PASSWORD_DEFAULT);

echo $hash;
?>

11. Comprobar una contraseña

<?php
if (password_verify($password, $hash)) {
    echo 'Contraseña correcta';
}
?>

12. Crear una sesión de usuario

<?php
session_start();

$_SESSION['usuario_id'] = 10;
$_SESSION['nombre'] = 'Ana';
?>

13. Proteger una página con sesión

<?php
session_start();

if (!isset($_SESSION['usuario_id'])) {
    header('Location: login.php');
    exit;
}
?>

14. Leer un archivo de texto

<?php
$contenido = file_get_contents('datos.txt');

echo nl2br(htmlspecialchars($contenido));
?>

15. Guardar datos en un archivo

<?php
$texto = "Nueva línea
";

file_put_contents(
    'datos.txt',
    $texto,
    FILE_APPEND
);
?>

16. Conectarse a MySQL con PDO

<?php
$pdo = new PDO(
    'mysql:host=localhost;dbname=tienda;charset=utf8mb4',
    'root',
    ''
);

$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
?>

17. Buscar un registro con una consulta preparada

<?php
$stmt = $pdo->prepare(
    'SELECT * FROM productos WHERE id = :id'
);

$stmt->execute([
    'id' => 5
]);

$producto = $stmt->fetch(PDO::FETCH_ASSOC);
?>

18. Insertar un producto con PDO

<?php
$stmt = $pdo->prepare(
    'INSERT INTO productos (nombre, precio)
     VALUES (:nombre, :precio)'
);

$stmt->execute([
    'nombre' => 'Teclado',
    'precio' => 25000
]);
?>

19. Crear una paginación básica

<?php
$pagina = max(1, (int) ($_GET['pagina'] ?? 1));
$porPagina = 10;
$offset = ($pagina - 1) * $porPagina;

$stmt = $pdo->prepare(
    'SELECT * FROM productos LIMIT :limite OFFSET :offset'
);

$stmt->bindValue(':limite', $porPagina, PDO::PARAM_INT);
$stmt->bindValue(':offset', $offset, PDO::PARAM_INT);
$stmt->execute();
?>

20. Crear un filtro de búsqueda

<?php
$buscar = trim($_GET['buscar'] ?? '');

$stmt = $pdo->prepare(
    'SELECT * FROM productos
     WHERE nombre LIKE :buscar'
);

$stmt->execute([
    'buscar' => '%' . $buscar . '%'
]);

$productos = $stmt->fetchAll(PDO::FETCH_ASSOC);
?>

¿Qué sigue?

Si podés resolver estos ejercicios sin copiar las soluciones, ya estás listo para trabajar con desafíos avanzados: POO, seguridad, relaciones entre clases, arquitectura MVC y proyectos completos.

Serie de ejercicios de PHP

También podés ver todos los contenidos prácticos en la sección Ejercicios resueltos.

¿Te sirvió esta guía? ☕

☕ Apoyar con Mercado Pago

🌎 Apoyar con PayPal


Descubre más desde Club Programador

Suscríbete y recibe las últimas entradas en tu correo electrónico.

2 opiniones en “20 ejercicios intermedios de PHP resueltos: arrays, funciones, formularios y PDO”

Deja un comentario

Descubre más desde Club Programador

Suscríbete ahora para seguir leyendo y obtener acceso al archivo completo.

Seguir leyendo