Otras funciones

Terminamos la sección dedicada a arrays hablando de otras funciones que nos pueden resultar útiles en nuestros scripts.
En primer lugar enumeramos un conjunto de funciones que nos permiten desplazarnos por un array, por medio de su puntero interno.
Cada array tiene asociado un puntero que indica la posición actual en el mismo. Mediante las siguientes funciones podremos desplazar el puntero y obtener el elemento al que apunta actualmente:

  • each() devuelve el elemento actual y avanza.

  • current() devuelve el elemento actual sin avanzar.

  • reset() vuelve a colocar el puntero en la posición inicial.

  • end() coloca el puntero en la posición final del array.

  • next() primero avanza para a continuación devolver el elemento actual.

  • pos() es un alias de current(), se pueden utilizar ambas funciones indistintamente.

  • prev() primero retrocede para a continuación devolver el elemento actual.

En segundo lugar, vemos funciones de PHP para contar elementos de arrays. La función _count()_ ya la conocemos, ya que ha sido utilizada en muchos de los ejemplos de esta sección. Si lo preferimos, podemos utilizar la función _sizeof()_ en su lugar, que hace exactamente lo mismo, es decir, devolver el número de elementos del array. Otra posibilidad es utilizar _array_count_values()_, que devuelve una tabla de frecuencias de aparición de cada elemento del array que se le pase como parámetro. La salida será un array asociativo, donde para cada elemento la clave será uno de los elementos del array original, y el valor, el número de veces quese repite en él.

Podemos probar con el siguiente ejemplo:

$array = array(4, 5, 1, 2, 3, 1, 2, 1);
$ac = array_count_values($array);
foreach ($ac as $clave => $valor)
{
   echo "$clave - $valor_actual <br />";
}

Para comprobar que obtenemos esta salida:

4 – 1
5 – 1
1 – 3
2 – 2
3 – 1

Esta salida se interpreta de la siguiente manera: el elemento 4 se repite una vez en _$array_, el elemento 5 una vez también, el elemento 1 tres veces, etc.

results matching ""

    No results matching ""