-
Notifications
You must be signed in to change notification settings - Fork 0
1 arrays en php
Un array es un mapa ordenado que asocia valores con claves (values con keys). Esta forma de organizar los datos permite manejarlos en forma de listas, tablas asociativas, colecciones, diccionarios o lo que sea necesario. El objetivo es poder acceder, administrar y modificar los datos empleando su sintaxis básica, estructuras de control y funciones especializadas.
Indice de contenido
- Sintaxis
- Acceso y modificación de elementos de un array
- Arrays multidimensionales
- Referencias en arrays
- Comparación de arrays
Un array puede crearse de dos formas:
- Mediante el constructor del lenguaje array():
$miArray = array(
'key' => 'value',
'key2' => 'value2',
'key3' => 'value3'
// ...
);- Mediante corchetes []:
$miArray = [
'key' => 'value',
'key2' => 'value2',
'key3' => 'key3'
//...
];La coma después del último elemento del array es opcional.
La key puede ser un integer o un string. El value puede ser de cualquier tipo.
Consideraciones respecto a las keys de un array:
- Un string que contenga un integer válido se amoldará a tipo integer. Ejemplo: "8" se guardará como integer 8 (no ocurre lo mismo con "08").
- Un float también se amoldará a un integer, la parte fraccionaria se elimina. Ejemplo: 8,7 se guardará como 8.
- Los booleanos se amoldan a integers también, true se almacena como 1 y false como 0.
- Un null se amoldará a un string vacío, "".
- Los arrays y objetos no pueden utilizarse como keys.
- Si varios elementos usan el mismo key, se devolverá el último, los demás serán sobreescritos.
$animales = [
1 => "Perro", // 1
"1" => "Gato", // 1, sobreescribe al anterior
1.6 => "Avestruz", // 1, sobreescribe al anterior
true => "Rinoceronte" // 1, sobreescribe al anterior
];
// El único valor del array será [1] => "Rinoceronte"Especificar la key es opcional, si no se hace se añade automáticamente como key un integer incremental:
$miArray = [
"a",
"b",
5 => "c",
"d"
];
// El key integer será último key numérico + 1
array (size=4)
0 => string 'a' (length=1)
1 => string 'b' (length=1)
5 => string 'c' (length=1)
6 => string 'd' (length=1)Se puede acceder a los elementos de un array con la sintaxis de llaves array{key} o de corchetes array[key]:
$planetas = [
1 => "Marte",
"Otro" => "Júpiter",
"4" => "Saturno",
"Otromas" => "Plutón"
];
echo $planetas[1] . PHP_EOL; // Devuelve Marte
echo $planetas{"Otro"} . PHP_EOL; // Devuelve JúpiterTambién es posible hacer referencia al array resultado de una función:
function misAnimales()
{
return array("perro", "gato", "avestruz");
};
$miPerro = misAnimales()[0];
echo $miPerro; // Devuelve perroSi se intenta acceder a una key de un array que no se ha definido ocurrirá lo mismo que al intentar acceder a una variable sin definir: el resultado será null y se emitirá un mensaje de error E_NOTICE.
Para crear los elementos de un array se utilizan también los corchetes de la misma forma. Si no se incluye nada en los corchetes la key será un integer incremental automático, igual que cuando se crean arrays y no se indica el key:
$animales = [
"perro" => "Bobby",
"gato" => "Puskas",
"avestruz" => "Charles"
];
// Crear elementos de un array:
$animales["rinoceronte"] = "Brutus"; // Se crea el key rinoceronte con el nombre Brutus
$animales[] = "Bob"; // Se crea directamente el nombre de la mascota, con key numérica 0Para modificar elementos de un array se hace lo mismo, salvo que en los corchetes se incluye el elemento que se quiere modificar, sea numérico o asociativo:
$animales["perro"] = "Casanova"; // Se modifica el nombre del perro a Casanova
$animales[0] = "Browneyes"; // Se modifica el valor Bob del key 0 por BrowneyesSi el array al que se quiere añadir o modificar un elemento no existe, se crea, por lo que ésta también es una forma de crear un array, pero no es aconsejable. Siempre es mejor iniciar variables mediante asignación directa.
Para eliminar elementos de un array se emplea unset():
unset($animales["perro"]) // Elimina el elemento de key perro
unset($animales); // Elimina el array enteroCon unset() el array no se reindexa. Los keys numéricos en el array guardan el último key que ha estado presente en el array, aunque se haya eliminado con unset() y luego se cree de nuevo. A los nuevos valores que se inserten sin key, se les asignará el número de ese último key anterior al unset:
// Crear un array simple.
$miArray = array(1, 2, 3, 4, 5);
print_r($miArray); // Devuelve: Array ( [0] => 1 [1] => 2 [2] => 3 [3] => 4 [4] => 5 )
// Ahora elimina cada elemento, pero deja el mismo array intacto:
foreach ($miArray as $i => $value) {
unset($miArray[$i]);
}
print_r($miArray); // Devuelve: Array ( )
// Agregar un elemento (nótese que la nueva clave es 5, en lugar de 0).
$miArray[] = 6;
print_r($miArray); // Devuelve: Array ( [5] => 6 )
// Para evitar esto se puede emplear array_values
// La función array_values modifica este comportamiento y resetea los keys:
$miArray = array_values($miArray);
$miArray[] = 7;
print_r($miArray); // Devuelve: Array ( [0] => 6 [1] => 7 )Los arrays multidimensionales son arrays que contienen uno o más arrays. Sirven para guardar valores con más de un key. PHP interpreta arrays multidimensionales de cualquier nivel de profundidad, pero más de tres niveles es considerado poco práctico y complejo de entender.
Para acceder a un valor de un array de segundo nivel, se necesita emplear dos veces los corchetes, para acceder a un valor de un array de tercer nivel, tres corchetes, y así sucesivamente.
Ejemplo con dos niveles:
// El array guarda datos de Animal, Nombre y Edad
$animales = array
(
array("perro","Peanut",7),
array("gato","Prince",13),
array("avestruz","Schmoopie",4),
);
echo "El animal es un " . $animales[0][0] . " tiene " . $animales[0][2] . " años y se llama " . $animales[0][1];
// El animal es un perro tiene 7 años y se llama PeanutEjemplo con tres niveles:
$animales = array
(
array("perro", array("Sparky")),
array("gato", "Soldier", 13),
array("avestruz", "Spunky", 4),
);
echo "El animal es un " . $animales[0][0] . " y se llama " . $animales[0][1][0];
// El animal es un perro y se llama SparkyEs posible pasar los valores de un array por referencia, de esta forma se pueden modificar todos los valores de un array de vez mediante un loop:
$animales = array('perro', 'gato', 'liebre', 'jabalí');
foreach ($animales as &$animal)
{
$animal = mb_strtoupper($animal);
}
unset($animal);
var_dump($animales);Se hace unset($animal) para asegurar que las escrituras subsiguientes a $animal no modifiquen el último elemento del array, ya que hemos empleado foreach.
También se pueden copiar arrays por referencia, para que cualquier modificación en una, afecte a otra:
$animales1 = array('perro', 'gato', 'liebre', 'jabalí');
$animales2 = $animales1;
$animales2[] = 'león'; // Sólo cambia animales2, que se le añade el león
// $animales1 tiene la misma lista inicial
$animales3 =& $animales1;
$animales3[] = 'tigre'; // Ahora $animales1 y $animales3 tienen los mismos animales
// Los 4 iniciales + tigreLa comparación de arrays, como en los strings, se puede realizar con los símbolos de igual (==) o idéntico (===).
$a = array('a'=>1, 'b'=>2, 'c'=>3); // Array de referencia
$b = array('a'=>1, 'b'=>2, 'c'=>3); // Igual e idéntica
$c = array('a'=>1, 'b'=>2); // Un elemento menos
$d = array('a'=>1, 'b'=>100, 'c'=>3); // Un elemento tiene un valor diferente
$e = array('a'=>1, 'c'=>3, 'b'=>2); // Mismos key=>value pero en diferente orden
echo '$a == $b es ', var_dump($a == $b); // $a == $b es boolean true
echo '$a === $b es ', var_dump($a === $b); // $a === $b es boolean true
echo '$a == $c es ', var_dump($a ==$c); // $a == $c es boolean false
echo '$a === $c es ', var_dump($a === $c); // $a === $c es boolean false
echo '$a == $d es ', var_dump($a ==$d); // $a == $d es boolean false
echo '$a === $d es ', var_dump($a === $d); // $a === $d es boolean false
echo '$a == $e es', var_dump($a ==$e); // $a == $e es boolean true
echo '$a === $e es', var_dump($a === $e); // $a === $e es boolean false| Anterior | Siguiente |
@intelguasoft - Full Stack Developer
| Versión: | 0.0.3-beta |
El curso está organizado según las temáticas indicadas en la página oficial de Rogue Wave Zend para la certificación de PHP.
Esta curso no tiene ninguna relación con Zend. |
|---|---|---|
| Fecha: | 28.11.2018 |
Básicos
Sintaxis básicaOperadores
Operadores bit a bit
Variables
Estructuras de control
Constantes y constructores base
Espacio de nombres
Extensiones
Configuraciones
Variables al descubierto
Recolector de basuras
Rendimiento (Performance)
Funciones
FuncionesArgumentos en funciones
Funciones variables
Valores por referencia en funciones
Funciones que devuelven algo
Ámbito de variables
Funciones anónimas y closure's
Cadenas y patrones
Las comillas y las cadenas de caracteresHeredoc y Nowdoc
Comparando cadenas de caracteres
Extracción en cadenas de caracteres
Análisis en cadenas de caracteres
Reemplazos en cadenas de caracteres
Formato de cadena de caracteres
Expresiones regulares (RegEx)
Codificación de caracteres
Codificación en cadenas de caracteres
Arreglos (Array's)
ArreglosArreglos asociativos
Iterar arreglos
Funciones de arreglos
SPL Arreglos mediante objetos
Conversión de arreglos
Archivos (I/O)
Manejo de archivosLectura de archivos
Escritura de archivos
Funciones del sistema de archivos
Socket's y archivos
Streams (?)
Seguridad
Concepto y funcionamiento CGIConfigurando la seguridad
Seguridad en Sesiones
Ataques XSS
Ataques CSRF
Ataques SQLInjection
Ataques CodeInjection
Ataques EmailInjection
Filtrado de datos de entrada
Escape de datos de salida
Encriptación y contraseñas
Seguridad en el almacenamiento de datos
Seguridad en la subida de datos
SSL y OpenSSL
Base de datos
Principios básicos SQLLos joins en SQL
Principales funciones SQL
Preparando sentencias SQL
Transacciones en SQL
Algo de PDO
Programación Orientada a Objetos
Instancias de clasesModificadores y herencia de clases
Interfaces
Excepciones
Auto-carga (Autoload)
Reflexión (Reflection)
Determinación de tipos (Type hinting)
Constantes de clase
Enlace estático de ejecución (Late Static Binding)
Métodos mágicos
Librería estándar PHP (SPL)
Generadores (Generators)
Traits
Clases abstractas
Formatos de información
Algo de XMLAlgo de SimpleXML
Algo de XML Parser
Algo de PHP DOM
Algo de Web Services
Web Services con SOAP
Algo de REST
Algo de JSON
Formato de fecha y hora
Características web's
SesionesFormularios
Métodos GET y POST
Cookies
Protocolo HTTP y sus headers
Autenticación HTTP
Códigos de estado HTTP