(0 votos)

Un vector, en lenguajes de programación, no es lo mismo que un vector en matemáticas.

Un vector (o array) en php es un conjunto de datos. Se declara como el resto de variables, pero al final de la variable lleva dos corchetes ([ ]) donde se indica la posición del vector a la que acceder.

vector php vector php

Hay varias vormas de crear un vector:

Una forma sería indicando entre los corchetes la posición a la cual acceder.

$vector[0] = 'Dato 1';

$vector[1] = 'Dato 2';

$vector[2] = 'Dato 3';

 

Otra forma sería dejando el contenido de los corchetes en blanco. En este caso, php se encarga de incrementar el contador, empezando a contar desde cero.

$vector[] = 'Dato 1';

$vector[] = 'Dato 2';

$vector[] = 'Dato 3';

 

También se pueden crear de la siguiente forma:

$vector = array ("Dato 1", "Dato 2", "Dato 3", "Dato 4");

 

Las posiciones de los vectores, por lo general, son numéricas, pero también pueden ser palabras.

$vector[nombre] = "Mi nombre";

$vector[apellido] = "Mi apellido";

 

Hay algunas funciones relacionadas con los vectores:

  • array("elemento1","elemento2"). Como ya hemos visto, sirve para añadir elementos a un vector.
  • reset($vector). Sirve para poner el puntero al inicio del vector. El puntero es el que contiene la información sobre la siguiente posición del vector a la que corresponde acceder.
  • key($vector). Contiene la posición actual del puntero del vector.
  • next($vector). Avanza la posición del vector al siguiente elemento. En caso de no haber más elementos, devuelve false.
  • count($vector). Devuelve el número de elementos de un vector.

En un vector ordenado, estas funciones no son necesarias, pero en un vector desordenado, o por ejemplo, en un vector como el último caso, donde las posiciones no vienen dadas por números, si no por nombres, necestiamos utilizar esas funciones.

Ejemplos:

<?php
$v[0] = 'PHP';
$v[1] = 'Creación';
$v[2] = ' - Aprende a crear tu web';
//Para mostrar los elementos del vector por pantalla, de forma manual:
echo $v[0].' '.$v[1].' '.$v[2];
?>

Pero, ¿qué pasa si no sabemos cuantos elementos hay, o hay demasiados como para ponerlos a mano?. Aquí es donde entra el bucle for y el comando count.

<?php
$v[0] = 'PHP';
$v[1] = 'Creación';
$v[2] = ' - Aprende a crear tu web';
$size = count($v);
for($i=0;$i<$size;$i++){
echo $v[$i].' ';
}
?>

Recordando el funcionamiento del bucle for, lo que hemos hecho es guardar en la variable $size el valor devuelvo por count($v), es decir, el número de elementos del vector.

Iniciamos la variable $i en cero, repetimos el bucle una vez por cada elemento que contenga el vector ($i<$size) e incrementamos el contador ($i++). Para mostrar el contenido del vector, a cada repeteción del bucle mostramos un elemento. Como la variable $i contiene el número de la repetición en curso, lo usamos para determinar el elemento del vector al que acceder ($v[$i]).

De esta forma, en la primera repetición del bucle, $i vale 0, por tanto, accedemos a la posición 0 del vector, en la segunda, $i vale 1, y accedemos a la posición 1 del vector, etc.

Pero, ¿qué ocurre si los elementos no son consecutivos o no son numéricos? Entonces debemos utilizar el resto de comandos mencionados arriba. Probad el ejemplo anterior cambiando $v[2] por $v[3] y vereis como no muestra todos los elementos. Ahora veremos otro ejemplo para solucionar esto:

 

<?php
$v[0] = 'PHP';
$v[1] = 'Creación';
$v[3] = ' - Aprende a crear tu web';
$size = count($v);
reset($v);
for($i=0;$i<$size;$i++){
$j = key($v);
echo $v[$j].' ';
next($v);
}
?>

En este caso, reiniciamos la posición del puntero con reset($v), contamos el número de elementos que hay en el vector, y creamos un bucle con un número de repeticiones igual al número de elementos. Guardamos en $j la posición actual del vector usando key($v), la mostramos y avanzamos una posición el puntero del vector con next($v).

También se puede hacer con un do while:

<?php
$v[0] = 'PHP';
$v[1] = 'Creación';
$v[3] = ' - Aprende a crear tu web';
reset($v);
do{
$i = key($v);
echo $v[$i].' ';
}while(next($v));
?>

Esta vez lo que hemos heco es reiniciar la posición del puntero del vector a la primera posición de este, usando reset($v), luego, hemos creado un bucle do while. Dentro del bucle, almacenamos la posición a mostrar del vector, en la variable $i, con key($v). Tras mostrar el resultado, y cerrar el bucle, hemos puesto la condición para que este se repita, la cual es next($v). Creando este comando como condición, mientras queden elementos por mostrar, avanzará la posición del puntero tras cada repetición del bucle. Cuando no queden más elementos por mostrar, devolverá false, por lo que el bucle no se repetirá más.

Al igual que existe la función reset y next, también existe la función end, que mueve el puntero a la última posición del vector, y la función prev, que lleva el puntero a la posición anterior a la actual.

Otra forma de recorrer los vectores, es mediante los comandos list y each. Veamos su uso:

<?php
$lugar[0] = 'Londres';
$lugar[15] = 'Paris';
$lugar [5] = 'Valencia';
$lugar [500]  = 'Bilbao';
$lugar[30] = 'Atenas';
while (list($i,$valor)=each($lugar)){
echo "$valor<br>";
}
?>

Esta vez, hemos usado una única expresión: list($i,$valor)=each($lugar). El comando list recibe dos variables, una para el contador del puntero del vector y otra que contiene el valor del vector en cada una de las posiciones de este. Es decir, en $i se guarda la posición actual del vector, y en $valor se guarda el conenido de la posición $i del vector, que se lo hemos pasado a la función each, en este caso $lugar. La función completa, de forma genérica, sería list($posicion_vector,$valor_vector)=each($vector). La expresión $valor, dentro del bucle, se puede sustituir por $lugar[$i], aunque no es más práctico hacerlo así.

Para empezar con los vectores, recomiendo utilizar y practicar el primer método mencionado en esta entrada. Es el más simple y el que menos conocimientos requiere. Los últimos métodos, que incluyen algunas funciones, son más para cuando los vectores no están ordenados, en cuyo caso el último método parece el más sencillo.

Comentarios (0)
¡Sólo los usuarios registrados pueden escribir comentarios!