Arreglos en PHP
Vectores o arreglos unidimensionales
Un vector o arreglo unidimensional, almacena varios valores en una sola variable:
Un vector o arreglo unidimensional, almacena varios valores en una sola variable:
<?php
$cars = array("Volvo", "BMW", "Toyota");
echo "Me gustan los " . $cars[0] . ", " . $cars[1] .
" y " . $cars[2] . ".";
?>
Un vector o arreglo unidimensional, es una variable especial, que puede contener más de un valor a la vez.
Si tiene una lista de elementos (una lista de nombres de automóviles, por ejemplo), almacenar los automóviles en variables individuales podría verse así:
$cars1 = "Volvo";
$cars2 = "BMW";
$cars3 = "Toyota";
Sin embargo, ¿qué pasa si quieres recorrer los autos y encontrar uno específico? ¿Y si no tuvieras 3 coches, sino 300?
¡La solución es crear una matriz!
Una matriz puede contener muchos valores bajo un solo nombre, y puede acceder a los valores haciendo referencia a un número de índice.
En PHP, la función se utiliza para crear un vector o array ( ):
array();
🟡Indexados
🟡Asociativos:
🟡Multidimensionales
La función count ( ) se utiliza para devolver la longitud (el número de elementos) de una arreglo:
Hay dos formas de crear matrices indexadas:
El índice se puede asignar automáticamente (índice siempre comienza en 0), así:
$cars = array("Volvo", "BMW", "Toyota");
o el índice se puede asignar manualmente:
$cars[0] = "Volvo";
$cars[1] = "BMW";
$cars[2] = "Toyota";
En el ejemplo siguiente se crea una matriz indizada denominada $cars, se asignan tres y, a continuación, imprime un texto que contiene los valores de la matriz:
<?php
$cars = array("Volvo", "BMW", "Toyota");
echo "Me gustan los " . $cars[0] . ", " . $cars[1] .
" y " . $cars[2] . ".";
?>
Para recorrer e imprimir todos los valores de una matriz indexada, puede usar un bucle, como este: for
<?php
$cars = array("Volvo", "BMW", "Toyota");
$arrlength = count($cars);
for($x = 0; $x < $arrlength; $x++) {
echo $cars[$x];
echo "<br>";
}
?>
Las matrices asociativas son matrices que utilizan claves con nombre que se les asignan.
Hay dos formas de crear una matriz asociativa:
$age = array("Peter"=>"35", "Ben"=>"37", "Joe"=>"43");
O es lo mismo que:
$age['Peter'] = "35";
$age['Ben'] = "37";
$age['Joe'] = "43";
Las claves con nombre se pueden usar en un script:
<?php
$age = array("Peter"=>"35", "Ben"=>"37", "Joe"=>"43");
echo "Peter is " . $age['Peter'] . " years old.";
?>
Para recorrer e imprimir todos los valores de una matriz asociativa, puede usar un bucle, como este foreach:
<?php
$age = array("Peter"=>"35", "Ben"=>"37", "Joe"=>"43");
foreach($age as $x => $x_value) {
echo "Llave=" . $x . ", Valor=" . $x_value;
echo "<br>";
}
?>
Una matriz multidimensional es una matriz que contiene una o más matrices.
PHP admite matrices multidimensionales que son dos, tres, cuatro, cinco o Más niveles de profundidad. Sin embargo, las matrices de más de tres niveles de profundidad son difíciles de administrar para la mayoría de las personas.
La dimensión de una matriz indica el número de índices que necesita para seleccionar un elemento.
🟡 Para una matriz bidimensional, necesita dos índices para seleccionar un elemento
🟡 Para una matriz tridimensional se necesitan tres índices para seleccionar un elemento
Una matriz bidimensional es una matriz de matrices (una matriz tridimensional es una matriz de matrices de matrices).
Podemos almacenar los datos de la tabla anterior en una matriz bidimensional, como esta:
$cars = array (
array("Volvo",22,18),
array("BMW",15,13),
array("Saab",5,2),
array("Land Rover",17,15)
);
Ahora la matriz $cars bidimensional contiene cuatro matrices y tiene dos índices: fila y columna.
Para obtener acceso a los elementos de la matriz $cars debemos apuntar a los dos Índices (fila y columna):
<?php
echo $cars[0][0].": En stock: ".$cars[0][1].", vendidos: ".$cars[0][2].".<br>";
echo $cars[1][0].": En stock: ".$cars[1][1].", vendidos: ".$cars[1][2].".<br>";
echo $cars[2][0].": En stock: ".$cars[2][1].", vendidos: ".$cars[2][2].".<br>";
echo $cars[3][0].": En stock: ".$cars[3][1].", vendidos: ".$cars[3][2].".<br>";
?>
También podemos poner un bucle for dentro de otro bucle for, para obtener los elementos de la matriz $cars (todavía tenemos que señalar los dos índices):
<?php
for ($row = 0; $row < 4; $row++) {
echo "<p> <b>Row number $row</b></p>";
echo "<ul>";
for ($col = 0; $col < 3; $col++) {
echo "<li>".$cars[$row][$col]."</li>";
}
echo "</ul>";
}
?>