La Estructura que Simula una Base de Datos en PHP

 Arrays Asociativos: La Estructura que Simula una Base de Datos en PHP

¡Excelente pregunta! Efectivamente, los arrays asociativos son los que más se parecen a una base de datos porque permiten una estructura organizada con claves y valores, similar a una tabla.

🏗️ Simulando una Tabla de Base de Datos

php
<?php
// Estructura que simula una tabla de usuarios en una BD
$usuarios = [
    [
        "id" => 1,
        "nombre" => "Ana García",
        "email" => "ana@email.com",
        "edad" => 28,
        "activo" => true,
        "fecha_registro" => "2024-01-15"
    ],
    [
        "id" => 2,
        "nombre" => "Carlos López",
        "email" => "carlos@email.com",
        "edad" => 35,
        "activo" => false,
        "fecha_registro" => "2023-11-20"
    ],
    [
        "id" => 3,
        "nombre" => "María Rodríguez",
        "email" => "maria@email.com",
        "edad" => 42,
        "activo" => true,
        "fecha_registro" => "2024-03-05"
    ]
];

// Acceso similar a consulta SQL
echo $usuarios[0]["nombre"]; // Ana García
echo $usuarios[1]["email"];  // carlos@email.com
?>

🔍 Operaciones Tipo CRUD con Arrays Asociativos

CREATE - Agregar nuevo registro

php
<?php
$nuevoUsuario = [
    "id" => 4,
    "nombre" => "Pedro Martínez",
    "email" => "pedro@email.com",
    "edad" => 31,
    "activo" => true,
    "fecha_registro" => date('Y-m-d')
];

$usuarios[] = $nuevoUsuario;
?>

READ - Buscar y leer datos

php
<?php
// Buscar usuario por ID (similar a SELECT * FROM usuarios WHERE id = 2)
function buscarUsuarioPorId($id, $usuarios) {
    foreach ($usuarios as $usuario) {
        if ($usuario["id"] == $id) {
            return $usuario;
        }
    }
    return null;
}

$usuarioBuscado = buscarUsuarioPorId(2, $usuarios);
print_r($usuarioBuscado);
?>

UPDATE - Actualizar registro

php
<?php
// Actualizar email del usuario con ID 1
foreach ($usuarios as &$usuario) {
    if ($usuario["id"] == 1) {
        $usuario["email"] = "nuevo_email@email.com";
        $usuario["activo"] = false;
        break;
    }
}
?>

DELETE - Eliminar registro

php
<?php
// Eliminar usuario con ID 3
foreach ($usuarios as $key => $usuario) {
    if ($usuario["id"] == 3) {
        unset($usuarios[$key]);
        break;
    }
}
// Reindexar array
$usuarios = array_values($usuarios);
?>

📈 Estructura Completa de Múltiples Tablas

php
<?php
// Base de datos completa en arrays asociativos
$baseDatos = [
    "usuarios" => [
        [
            "id" => 1,
            "nombre" => "Ana García",
            "rol_id" => 2
        ],
        [
            "id" => 2,
            "nombre" => "Carlos López", 
            "rol_id" => 1
        ]
    ],
    
    "roles" => [
        [
            "id" => 1,
            "nombre" => "Administrador",
            "permisos" => ["crear", "editar", "eliminar"]
        ],
        [
            "id" => 2, 
            "nombre" => "Usuario",
            "permisos" => ["leer"]
        ]
    ],
    
    "pedidos" => [
        [
            "id" => 101,
            "usuario_id" => 1,
            "producto" => "Laptop",
            "total" => 1200.50
        ]
    ]
];

// Consulta relacional (como JOIN en SQL)
function obtenerUsuarioConRol($userId, $baseDatos) {
    foreach ($baseDatos["usuarios"] as $usuario) {
        if ($usuario["id"] == $userId) {
            foreach ($baseDatos["roles"] as $rol) {
                if ($rol["id"] == $usuario["rol_id"]) {
                    $usuario["rol"] = $rol;
                    return $usuario;
                }
            }
        }
    }
    return null;
}

$usuarioCompleto = obtenerUsuarioConRol(1, $baseDatos);
print_r($usuarioCompleto);
?>

🎯 Ventajas de Usar Arrays Asociativos como BD

  1. Estructura clara - Claves descriptivas como columnas de tabla

  2. Búsqueda eficiente - Puedes buscar por cualquier campo

  3. Flexibilidad - Fácil de modificar y expandir

  4. Legibilidad - El código se auto-documenta

⚠️ Limitaciones

  • No escalable para grandes volúmenes de datos

  • Datos en memoria - Se pierden al terminar la ejecución

  • Sin transacciones - No hay ACID como en bases de datos reales

💡 Casos de Uso Ideales

  • Configuraciones de aplicación

  • Datos de prueba durante desarrollo

  • Cache simple en memoria

  • Pequeños conjuntos de datos estáticos

¿Quieres que profundice en cómo implementar alguna operación específica de base de datos con arrays?

Comentarios

Entradas más populares de este blog

token

¿Qué es un token y cómo se utiliza en una API?

Generación de Credenciales API