Arrays en PHP: Guía Completa con Ejemplos
Aprende todo sobre los arrays en PHP: qué son, cómo se crean, tipos de arrays, funciones útiles y ejemplos prácticos para programadores principiantes.
Leer másObjetivo: Esta guía está pensada para alguien con conocimientos básicos de programación en PHP (variables, funciones y estructuras de control). Aquí aprenderás desde los conceptos más importantes de la Programación Orientada a Objetos (POO) hasta ejemplos prácticos explicados paso a paso.
La Programación Orientada a Objetos (POO) es una forma de organizar el código usando clases y objetos:
¿Por qué usarla? Porque ayuda a:
<?php
class Persona {
public string $nombre; // propiedad pública
private int $edad; // propiedad privada
// Constructor: se ejecuta al crear la instancia
public function __construct(string $nombre, int $edad) {
$this->nombre = $nombre; // asigna la propiedad 'nombre'
$this->edad = $edad; // asigna la propiedad 'edad'
}
// Método: comportamiento de la clase
public function saludar(): string {
return "Hola, soy {$this->nombre} y tengo {$this->edad} años.";
}
}
// Crear (instanciar) un objeto
$p = new Persona("Andrés", 30);
echo $p->saludar(); // Muestra: Hola, soy Andrés y tengo 30 años.
Explicación línea por línea
class Persona { ... } define la plantilla.public string $nombre; es una propiedad accesible desde fuera.private int $edad; es una propiedad que sólo la clase puede usar directamente.__construct(...) es el constructor: recibe parámetros y prepara el objeto.$this->nombre refiere a la propiedad nombre del objeto actual.new Persona(...) crea una instancia (un objeto).Antes de PHP 8 había que declarar propiedades y luego asignarlas en el constructor. PHP 8 introdujo constructor property promotion para ahorrar código.
Forma clásica (PHP 7.x y anterior):
class UsuarioOld {
public string $nombre;
private string $email;
public function __construct(string $nombre, string $email) {
$this->nombre = $nombre;
$this->email = $email;
}
}
Con property promotion (PHP 8+):
class Usuario {
public function __construct(
public string $nombre,
private string $email
) {}
}
$u = new Usuario("Ana", "ana@example.com");
echo $u->nombre; // Ana
Consejo: usa promotion para DTOs y clases simples; para lógica compleja dentro del constructor usa la forma clásica.
public: accesible desde cualquier sitio.protected: accesible en la clase y sus subclases.private: accesible sólo dentro de la misma clase.Ejemplo con getters/setters (buena práctica):
class Cuenta {
private float $saldo = 0.0;
public function depositar(float $monto): void {
if ($monto <= 0) throw new InvalidArgumentException("Monto inválido");
$this->saldo += $monto;
}
// getter público para consultar saldo
public function obtenerSaldo(): float {
return $this->saldo;
}
}
$c = new Cuenta();
$c->depositar(100.50);
echo $c->obtenerSaldo(); // 100.5
Por qué usar private ? Para proteger el estado del objeto y validar cambios desde métodos controlados.
Las propiedades/métodos static pertenecen a la clase (no a la instancia).
class Contador {
public static int $cuenta = 0;
public static function incrementar(): void {
self::$cuenta++;
}
}
Contador::incrementar();
echo Contador::$cuenta; // 1
Cuándo usar: datos globales a todas las instancias (por ejemplo, contador de objetos, configuración compartida).
Permite crear clases hijas a partir de una clase padre.
class Animal {
public function hablar(): string {
return "...";
}
}
class Perro extends Animal {
public function hablar(): string {
return "Guau";
}
}
$perro = new Perro();
echo $perro->hablar(); // Guau
Nota práctica: si la clase hija necesita inicializar propiedades del padre, usa parent::__construct(...).
Abstract class: sirve como base y puede definir tanto métodos concretos como abstractos (sin implementación).
abstract class Figura {
abstract public function area(): float;
public function descripcion(): string {
return "Soy una figura";
}
}
class Rectangulo extends Figura {
public function __construct(private float $ancho, private float $alto) {}
public function area(): float {
return $this->ancho * $this->alto;
}
}
Interface: define un contrato puro; cualquier clase que implemente la interface debe definir esos métodos.
interface Jsonable {
public function toJson(): string;
}
class Producto implements Jsonable {
public function __construct(public string $nombre, public float $precio) {}
public function toJson(): string {
return json_encode(get_object_vars($this));
}
}
Cuándo usar cada uno:
Los traits permiten compartir métodos entre clases sin forzar una relación padre-hijo.
trait Logger {
public function log(string $msg): void {
echo "[LOG] $msg
";
}
}
class Servicio {
use Logger;
}
$s = new Servicio();
$s->log("Listo."); // [LOG] Listo.
Precaución: evita abusar de traits; úsalos para pequeñas utilidades reutilizables.
Los métodos mágicos son funciones especiales que PHP llama en determinados eventos:
__construct() — al crear la instancia.__destruct() — al destruir la instancia.__toString() — cuando el objeto se trata como string.__get($name) / __set($name, $value) — al acceder a propiedades inaccesibles o inexistentes.__call($name, $arguments) — llamadas a métodos no existentes en la instancia.__callStatic(...) — llamadas a métodos estáticos inexistentes.__clone() — al clonar un objeto.__sleep() / __wakeup() — para serialización.Ejemplo sencillo con __get y __toString:
class Caja {
private array $data = [];
public function __get($k) { return $this->data[$k] ?? null; }
public function __set($k, $v) { $this->data[$k] = $v; }
public function __toString(): string { return json_encode($this->data); }
}
$c = new Caja();
$c->hola = "mundo";
echo $c->hola; // mundo
echo $c; // {"hola":"mundo"}
clone $a crea una copia superficial (shallow copy). Si las propiedades incluyen objetos, ambas instancias compartirán referencias a esos objetos a menos que implementes __clone().
Ejemplo de clonación profunda (deep clone):
class Sub {
public function __construct(public array $items = []) {}
}
class Padre {
public Sub $sub;
public function __construct() {
$this->sub = new Sub();
}
public function __clone() {
// clonar el objeto contenido para no compartir la referencia
$this->sub = clone $this->sub;
}
}
$a = new Padre();
$a->sub->items[] = 1;
$b = clone $a;
$b->sub->items[] = 2;
print_r($a->sub->items); // [1]
print_r($b->sub->items); // [1,2]
<?php
// Entidad User simple
class User {
public function __construct(
public int $id,
public string $name,
public string $email
) {}
}
// Repositorio: responsable de almacenar/recuperar usuarios
class UserRepository {
/** @var array<int, User> */
private array $store = [];
public function save(User $u): void {
$this->store[$u->id] = $u;
}
public function find(int $id): ?User {
return $this->store[$id] ?? null;
}
public function all(): array {
return array_values($this->store);
}
public function delete(int $id): void {
unset($this->store[$id]);
}
}
// Uso:
$repo = new UserRepository();
$repo->save(new User(1, 'María', 'maria@example.com'));
$repo->save(new User(2, 'Luis', 'luis@example.com'));
$user = $repo->find(1);
if ($user) {
echo $user->name; // María
}
print_r($repo->all());
Explicación práctica:
UserRepository actúa como una capa de persistencia (aunque aquí sea en memoria). User (principio de responsabilidad única).class Validator {
public static function emailValido(string $email): bool {
return filter_var($email, FILTER_VALIDATE_EMAIL) !== false;
}
}
try {
$email = "no-valido";
if (!Validator::emailValido($email)) {
throw new InvalidArgumentException("Email inválido: $email");
}
} catch (InvalidArgumentException $e) {
echo $e->getMessage();
}
Tip: usa excepciones para errores que no deberían ocurrir en el flujo normal y valida siempre datos de entrada.
readonly en PHP 8.1+.Producto con id, nombre, precio. Implementa descuento(float $p) que reduzca el precio en p%.Persistible con métodos save() y delete(). Haz que UserRepository implemente esta interfaz.Order que tenga una lista de Product. Implementa método total() que sume precios. Asegura que Order pueda serializarse a JSON.¿Cuándo usar una clase vs un array?
Usa una clase cuando quieras representar una entidad con comportamiento y reglas; usa arrays para datos sencillos y temporales.
¿Pueden las clases tener funciones fuera de clases?
Sí, pero mantener la lógica relacionada dentro de clases mejora la organización.
¿Debo usar siempre getters/setters en PHP?
No siempre; para DTOs simples public es aceptable. Para lógica/validación usa getters/setters.
Aprende todo sobre los arrays en PHP: qué son, cómo se crean, tipos de arrays, funciones útiles y ejemplos prácticos para programadores principiantes.
Leer másAprende los fundamentos de PHP desde cero. Descubre qué son las variables, cómo se declaran, sus tipos principales y ejemplos prácticos para comenzar a programar en PHP.
Leer másAprende todo sobre los bucles en PHP. Descubre cómo funcionan while, do while, for y foreach con ejemplos claros, además de cómo usar break y continue.
Leer másAprende a configurar CodeIgniter 4 con Nginx en un VPS Ubuntu 20. Guía completa para instalar, optimizar y desplegar tu aplicación web de forma segura y eficiente.
Leer másAprende a usar condicionales en PHP paso a paso. Descubre cómo funcionan if, else, elseif, switch, el operador ternario y ?? con ejemplos prácticos y buenas prácticas de programación.
Leer másAprende a usar variables en PHP con ejemplos claros. Descubre cómo declararlas, concatenar cadenas de texto, realizar operaciones matemáticas y aplicar operadores en tus proyectos de programación web.
Leer másmarketing > Creador de Contenido
Aprende a utilizar Google Trends para identificar temas populares y crear contenido viral en 2025. Descubre cómo aprovechar esta herramienta para mejorar tu estrategia de SEO y atraer más tráfico orgánico.
Leer másDurante la Edad Media, el agua estaba tan contaminada que beberla podía ser mortal. Descubre cómo la cerveza se convirtió en una bebida vital para la supervivencia, la salud y la economía medieval.
Leer másDescubre las principales tendencias en marketing digital para redes sociales en 2025. Aprende cómo las marcas usarán IA, contenido corto, influencers y nuevas plataformas para conectar con su audiencia.
Leer másGuía completa sobre la salud física, emocional y mental de Virgo. Descubre sus fortalezas, puntos sensibles, hábitos recomendados y consejos de bienestar según la astrología.
Leer másDescubre la historia del asesinato de John F. Kennedy, un crimen que conmocionó al mundo en 1963 y que aún hoy sigue rodeado de misterio y teorías de conspiración.
Leer másEconomía > Finanzas Personales
Descubre los mejores trucos psicológicos para gastar menos y ahorrar más. Estrategias simples y efectivas para mejorar tu relación con el dinero.
Leer másExplora los hallazgos astronómicos más destacados de 2025: el nuevo satélite de Urano, un cometa interestelar, fenómenos alrededor de agujeros negros, el exoplaneta TWA 7 b, y la superestructura cósmica “Quipu”. Conoce cómo estas revelaciones transforman nuestra comprensión del universo.
Leer másDescubre la importancia estratégica del control marítimo en la Guerra del Pacífico. Conoce los principales buques y objetivos navales de cada país. ¡Entérate del desarrollo inicial de las operaciones!
Leer másDescubre cómo es Aries en el amor: personalidad, fortalezas, desafíos y compatibilidad con otros signos. Guía completa del signo Aries.
Leer másBiografía detallada de Nicolás Maduro Moros: su infancia en El Valle, su etapa como conductor de autobús, su afición por la música, su formación política en Cuba y su ascenso al poder tras Hugo Chávez.
Leer másEconomía > Emprendimiento Digital
Descubre cómo evoluciona el teletrabajo en 2025, las nuevas tendencias laborales, beneficios para empleados y empresas, y los principales retos de esta modalidad.
Leer másEconomía > Emprendimiento Digital
Descubre cómo la tecnología puede hacer que tu vida diaria sea más fácil y eficiente. Desde aplicaciones hasta dispositivos inteligentes, todo para simplificar tu rutina.
Leer másDescubre cómo es Géminis en la salud: su energía, puntos sensibles del cuerpo y consejos para mantener el equilibrio físico y mental.
Leer másExplora cómo vive Cáncer la espiritualidad. Descubre su conexión con la intuición, la energía lunar y el desarrollo interior que guía su vida espiritual
Leer másUna llamada de emergencia proveniente de una casa abandonada dejó perplejos a los agentes. Sin línea activa, sin electricidad y sin habitantes… ¿quién estaba llamando? Un caso real que aún genera escalofríos.
Leer másDeportes > Tendencias deportivas
Descubre cuáles son los deportes que lideran la pasión de millones en Latinoamérica en 2025. Desde el fútbol hasta disciplinas emergentes, te contamos qué mueve a los fanáticos
Leer másDescubre la compatibilidad completa de Virgo con los 12 signos del zodiaco: amor, amistad y energía zodiacal. Una guía detallada para entender cómo se relaciona Virgo con cada signo en 2025.
Leer másDescubre el Combate Naval de Angamos, la persecución y captura del Huáscar, y la muerte de Miguel Grau. Consecuencias estratégicas para la guerra del Pacífico
Leer másDescubre la historia del Asesino del Zodiaco, el criminal enigmático que sembró el terror en California con asesinatos, cartas cifradas y un misterio sin resolver.
Leer másDescubre la compatibilidad amorosa y amistosa de Cáncer con los demás signos del zodiaco. Conoce cuáles son sus mejores parejas y qué desafíos puede enfrentar
Leer másDescubre la Campaña de Tarapacá, un punto clave en la Guerra del Pacífico. Conoce los objetivos militares, movimientos de tropas y situación de los aliados en este conflicto histórico.
Leer másEconomía > Finanzas Personales
Aprende a manejar tus finanzas desde joven. Consejos prácticos para organizar tu dinero, ahorrar, invertir y construir una base financiera sólida.
Leer másDescubre cómo el signo Leo brilla en el ámbito espiritual. Aprende sobre su energía solar, su propósito de vida, cómo equilibrar el ego y conectar con su verdadera esencia interior
Leer másTecnología > Inteligencia Artificial
Descubre cómo la inteligencia artificial está transformando el trabajo en 2025. Conoce qué empleos están en riesgo, cuáles crecerán y cómo prepararte para el futuro.
Leer másDescubre la historia detrás de la Campaña de Tacna y Arica, un episodio clave en la Guerra del Pacífico. Conoce los detalles y su impacto en la región.
Leer más