Array PHP – Matriz

Este es un análisis del curso de desarrollo de temas WordPress de WPmudev.

La primera parte fue una introducción, esta segunda parte es sobre PHP, pero enfocado a las variables array.

El array

El array es una variable que tiene como valor una función array. Esta función es como una base de datos. Puede tomar muchas formas. En el ejemplo de abajo lo que se ve es una base de datos con tres valores. Es la forma más básica de una array. La variable $cars tomará el valor que se le indique en el sub índice, como $cars[o]. 

Entonces para crear una base de datos, o para crear una matriz, uso la función array()

<?php
$cars = array("Volvo", "BMW", "Toyota");
echo "I like " . $cars[0] . ", " . $cars[1] . " and " . $cars[2] . ".";
?>

La longitud es importante

Creo que en ocasiones conocer la longitud o la cantidad de datos que tiene un array es importante. Este contador no empieza desde cero, cuenta desde uno.

<?php
$cars = array("Volvo", "BMW", "Toyota");
echo count($cars);
?>

Se usa la función “count()”. Esta función va a contar la cantidad de datos que tenga la variable tipo matriz que se le coloque en el índice.

Matrices indexadas

Las matrices idexadas es como la que he estado colocando, cada valor tiene un índice que comienza con cero.

<?php
$cars = array("Volvo", "BMW", "Toyota");
echo "I like " . $cars[0] . ", " . $cars[1] . " and " . $cars[2] . ".";
?>
I like Volvo, BMW and Toyota.

Con el loop for podremos imprimir todos los datos de una variable matriz indexada:

<?php
$cars = array("Volvo", "BMW", "Toyota");
$arrlength = count($cars);

for($x = 0; $x < $arrlength; $x++) {
  echo $cars[$x];
  echo "<br>";
}
?>

El código anterior lo que hace es ejecutar la función for() para imprimir todos los datos de la variable matriz $cars. Esta función tiene tres partes, la primera le da un valor inicial a una variable que se usará mientras se esté ejecutando el loop, en este caso esa variable es $x. Luego determina una condición, en este caso evalúa si la variable $x es menor un determinado valor. En este caso ese valor es el valor de la función count() que se ejecutó anteriormente y está contenida en una variable, $arrlength. La tercera parte es una acción que se ejecuta si la condición es verdadera, es esta caso esa función for() tiene como posibilidad un incremento de la variable $x, en este caso le está sumando 1 con la instrucción $x++.

Entiendo por estudios anteriores que la última partes se ejecutan después de la segunda vuelta, ya que no debería incrementar el valor de la variable porque si no el primer dato que se imprimiría sería el segundo valor de la matriz.

Matrices asociativas

Las matrices asociativas son un tipo de matriz algo raras, me parece algo que está intermedio entre las matriz indexada y la siguiente que es la matriz multidimensional. Pero en esta caso, la matriz asociativa reemplaza el índice por una etiqueta (label). Entonces los valores están asociados de la manera etiqueta – valor.

<!DOCTYPE html>
<html>
<body>

<?php
$age = array("Peter"=>"35", "Ben"=>"37", "Joe"=>"43");
echo "Peter is " . $age['Peter'] . " years old.";
?>

</body>
</html>

Peter is 35 years old.

El loop foreach() es una función que se usa para sacar los valores de este tipo de matrices. Lo que ando averiguando porque me pregunto por qué no usan esta función para todo y se deja de usar la función for().

<?php
$age = array("Peter"=>"35", "Ben"=>"37", "Joe"=>"43");

foreach($age as $x => $x_value) {
  echo "Key=" . $x . ", Value=" . $x_value;
  echo "<br>";
}
?>

Key=Peter, Value=35
Key=Ben, Value=37
Key=Joe, Value=43

Prueba

Hice una prueba usando esta función con la matriz indexada y resultó bien tras algunas modificaciones:

<!DOCTYPE html>
<html>
<body>

<?php
$cars = array("Volvo", "BMW", "Toyota");
$arrlength = count($cars);

for($x = 0; $x < $arrlength; $x++) {
  echo $cars[$x];
  echo "<br>";
  }
  
echo "<br>"  ;
  
foreach($cars as $x) {
  echo "Key=" . $x;
  echo "<br>";   
  }
?>

</body>
</html>

Matrices Multidimensionales

Estas como que son las meras meras. Estas matrices podrían ser una mismísima base de datos. Se les llama multidimensionales porque son matrices de matrices. Pero creo que el uso común sería el de una table o una base de datos. Eso sería una matriz bidimensional y una matriz tridimensional.

En el caso de las bidimensionales tendríamos:

<!DOCTYPE html>
<html>
<body>

<?php
$cars = array (
  array("Volvo",22,18),
  array("BMW",15,13),
  array("Saab",5,2),
  array("Land Rover",17,15)
);
  
echo $cars[0][0].": In stock: ".$cars[0][1].", sold: ".$cars[0][2].".<br>";
echo $cars[1][0].": In stock: ".$cars[1][1].", sold: ".$cars[1][2].".<br>";
echo $cars[2][0].": In stock: ".$cars[2][1].", sold: ".$cars[2][2].".<br>";
echo $cars[3][0].": In stock: ".$cars[3][1].", sold: ".$cars[3][2].".<br>";
?>

</body>
</html>

Volvo: In stock: 22, sold: 18.
BMW: In stock: 15, sold: 13.
Saab: In stock: 5, sold: 2.
Land Rover: In stock: 17, sold: 15.

Para listar los valores se propone usar de nuevo la función for(). Pero en este caso una especie de función for() anidada. El primero bucle resolvería la fila, luego el segundo bucle resolvería cada dato de la fila hasta terminar, cuando el primer bucle resolvería la siguiente fila y así sucesivamente.

<!DOCTYPE html>
<html>
<body>

<?php
$cars = array (
  array("Volvo",22,18),
  array("BMW",15,13),
  array("Saab",5,2),
  array("Land Rover",17,15)
);
    
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>";
}
?>

</body>
</html>

 

Row number 0

Volvo
22
18
Row number 1

BMW
15
13
Row number 2

Saab
5
2
Row number 3

Land Rover
17
15

Fin de la clase de arrays

Leave a comment

Your email address will not be published. Required fields are marked *