Apuntes php

PHP: Porque a veces necesitas un poco de caos en tu vida.

Lección: Introducción a los Arrays en PHP

Aunque al principio puedan parecer un poco complicados, los arrays son una herramienta poderosa y muy útil. Los arrays (también llamados en castellano matrices o arreglos) son varios valores apilados, cada uno con su etiqueta. En esta lección veremos cómo crearlos, y cómo usarlos

¿Qué es un array?

Un array (o matriz) es una variable especial que no guarda un solo valor, sino un conjunto de valores, cada uno identificado por un índice (también llamado key, o clave). Puedes pensar en un array como una lista numerada o un diccionario donde cada entrada tiene un nombre.
Los arrays son esenciales en todos los lenguajes de programación y, en PHP los encontrarás por todas partes

Creando arrays

Hay dos formas de crear arrays: estática (definiendo todos los valores de una vez) y dinámica (añadiendo valores sobre la marcha).

Creación estática

Usa la función array() para crear un array con la sintaxis array(indice => valor, indice => valor, ...). Los índices pueden ser números o texto, y si no los especificas, PHP los asigna empezando desde 0:

<?php
$mis_ciudades = array(
    0 => "Madrid",
    1 => "Barcelona",
    2 => "Zaragoza"
);
echo $mis_ciudades[1]; // Imprime: Barcelona
?>

También puedes usar la sintaxis corta []:

<?php
$mis_ciudades = [
    "Madrid",
    "Barcelona",
    "Zaragoza"
];
echo $mis_ciudades[0]; // Imprime: Madrid
?>

Nota: Por convención, los índices numéricos empiezan en 0.

Puedes definir arrays como constantes con const o define() para valores fijos:

<?php
const CIUDADES = ["Madrid", "Barcelona"];
echo CIUDADES[0]; // Imprime: Madrid
?>

Nota: Los arrays, al igual que las variables, pueden tener un alcance (local o global). Si los defines dentro de una función, solo estarán disponibles dentro de esa función a menos que uses la palabra clave global para acceder a ellos desde fuera. Recuerda lo que vimos en la lección de variables sobre el alcance de las variables.

Creación dinámica

Añade valores a un array existente usando corchetes ([]). Si no especificas un índice, PHP asigna el siguiente número disponible:

<?php
$mis_ciudades = [];
$mis_ciudades[0] = "Madrid";
$mis_ciudades[1] = "Barcelona";
$mis_ciudades[] = "Valencia"; // Índice automático: 2
echo $mis_ciudades[2]; // Imprime: Valencia
?>

También puedes modificar valores existentes:

<?php
$mis_ciudades[1] = "Sevilla"; // Cambia Barcelona por Sevilla
echo $mis_ciudades[1]; // Imprime: Sevilla
?>

con array_push() puedes agregar varios elementos en una sola llamada:

<?php
$ciudades = ["Madrid"];
array_push($ciudades, "Barcelona", "Valencia", "Sevilla"); //equivalente a:
$ciudades = ["Madrid"];
$ciudades[] = "Barcelona";
$ciudades[] = "Valencia";
$ciudades[] = "Sevilla";
?>

También puedes usar la sintaxis corta para añadir valores:

<?php
$mis_ciudades = ["Madrid", "Barcelona"];
$mis_ciudades[] = "Valencia"; // Añade al final
echo $mis_ciudades[2]; // Imprime: Valencia
?>

Arrays asociativos

En lugar de índices numéricos, puedes usar cadenas como claves, creando un array asociativo (clave => valor). Esto es como un diccionario donde cada valor tiene un nombre:

<?php
$capitales = [
    "España" => "Madrid",
    "Cataluña" => "Barcelona",
    "Aragón" => "Zaragoza"
];
echo $capitales["Cataluña"]; // Imprime: Barcelona
?>

Ejemplo práctico: Un array para un menú web:

<?php
$temas = [
    "index.php" => "Introducción al FTP",
    "comandos.php" => "Comandos básicos",
    "chmod.php" => "CHMOD, asignando permisos"
];
echo $temas["index.php"]; // Imprime: Introducción al FTP
?>

Nota sobre casting: Si recuperas un valor, puedes forzar su tipo con (string) o settype():

<?php
$datos = ["edad" => "25"];
$edad = (string)$datos["edad"]; // Casting
echo gettype($edad); // Imprime: string
?>

Arrays multidimensionales

Un array multidimensional es un array que contiene otros arrays. Es como una tabla con filas y columnas:

<?php
$agenda = [
    "domicilio" => "Calle Tal Cual",
    "telefono" => [
        "trabajo" => "7296489",
        "casa" => "5689524",
        "movil" => "9558987"
    ],
    "trabajo" => "Empresa Tal Cual"
];
echo $agenda["telefono"]["casa"]; // Imprime: 5689524
?>

Arrays hasta en la sopa

En PHP, los arrays están en todas partes. Los datos de formularios ($_POST), bases de datos, y configuraciones suelen ser arrays. Hay arrays predefinidos y globales como $_SERVER, que contiene información del servidor (IPs, rutas, referers, etc.):

Ejemplo con formularios: Los datos de formularios llegan como arrays:

<?php
// Simula $_POST
$_POST = ["nombre" => "Ana", "edad" => "25"];
echo $_POST["nombre"]; // Imprime: Ana
?>

ejemplo para obtener la IP de un visitante y la página previa:

<?php
echo $_SERVER["REMOTE_ADDR"]; // Imprime: IP del visitante
echo $_SERVER["HTTP_REFERER"] ?? "No hay referer"; // Imprime: Página previa
?>

Nota: Para detectar la IP real, verifica HTTP_X_FORWARDED_FOR si el usuario está detrás de un proxy:

<?php
$ip = isset($_SERVER["HTTP_X_FORWARDED_FOR"]) ? $_SERVER["HTTP_X_FORWARDED_FOR"] : $_SERVER["REMOTE_ADDR"];
echo $ip; // Imprime: IP real o remota
?>

Recuperando todo el contenido

Usa print_r() para mostrar un array de forma legible:

<?php
print_r($_SERVER);
?>

Para recorrer un array, usa foreach():
- Forma 1: Solo valores.

<?php
foreach ($_SERVER as $value) {
    echo "Valor: $value\n";
}
?>

Forma 2: Claves y valores.

<?php
foreach ($_SERVER as $key => $value) {
    echo "$key tiene el valor: $value\n";
}
?>

Otras funciones útiles

  • count($array): Cuenta los elementos.
<?php
$ciudades = ["Madrid", "Barcelona"];
echo count($ciudades); // Imprime: 2
?>
  • in_array($valor, $array): Comprueba si un valor está en el array.
<?php
$ciudades = ["Madrid", "Barcelona"];
if (in_array("Madrid", $ciudades)) {
    echo "Madrid está en el array"; // Imprime: Madrid está en el array
} else {
    echo "Madrid no está en el array";
}
?>
  • array_merge($array1, $array2): Combina arrays.
<?php
$array1 = ["a" => 1];
$array2 = ["b" => 2];
$combinado = array_merge($array1, $array2);
print_r($combinado); // Imprime: [a => 1, b => 2]
?>
  • array_keys($array): Obtiene las claves de un array.

Para convertir un array en una cadena de texto puedes usar la función implode(), que une todos los elementos separados por el texto que indiques (por ejemplo, una coma, un espacio o una barra). El proceso inverso se realiza con explode(), que divide una cadena en partes y las guarda en un array, usando como referencia el separador que definas.

$ciudades = ["Madrid", "Barcelona", "Valencia"];
$lista = implode(", ", $ciudades);
echo $lista; // Imprime: Madrid, Barcelona, Valencia
$texto = "uno;dos;tres";
$array = explode(";", $texto);
print_r($array); // Array ( [0] => uno [1] => dos [2] => tres ) 
TOP