Categorías: PHP y MySQL

PHP count(): Contar el número de elementos en un array u objeto

Post sencillo para ver la función PHP count(), esta función ya la he usado anteriórmente en un ejemplo de la función PHP simpleXML.

La definición de esta función de PHP es:

PHP count() cuenta todos los elementos en un array o en un objeto

Quizás os parezcan interesantes estas otras funciones para manejar arrays: PHP foreach(), PHP array_push(), shuffle() y unset(), count() también tiene un alias llamado sizeof().

Aunque en un post pasado ya comenté el manejo básico de arrays en PHP, voy a complementar ahora dicho post haciendo un ejemplo para contar el número de elementos en un array.

Sintaxis de PHP count()

La sintaxis de esta función según su web oficial es:

count ($objeto, $modo)

Tal y como veis la sintaxis es sencilla:

  • $objeto: Es la variable donde tenemos el objeto o array.
  • $modo: Admite los valores 0 y 1, con 0 (por defecto) no cuenta el número de elementos en un array muntidimensional. Y con valor 1 cuenta los arrays de forma recursiva para sacar el número total de elementos.

Ejemplo para contar los elementos de un array con PHP count()

En este primer ejemplo voy a contar el número de elementos que hay en un array con PHP count():

$pilotos=array(
  "Ferrari"=>array("Alonso","Kimi"),
  "Mercedes"=>array("Hamilton","Rosberg")
);

echo "Número de pilotos, contando de manera no recursiva: " . count($pilotos);
echo "Número de pilotos, contando de manera recursiva: " . count($pilotos,1);

En el código superior tenemos un array bidimensional con 2 escuderías de F1 y sus pilotos.

  • Usando esta función en modo no recursivo saco por pantalla el número de elementos que hay en el array (saca los 2 arrays que hay en el array).
  • Utilizando el modo recursivo saco el número total de elementos que hay en el array bidimensional.

Obtener el número de nodos de un XML con PHP count()

Segundo ejemplo para obtener de una manera sencilla el número de nodos de un XML. Este ejemplo lo he cogido del post ‘PHP simpleXML: Leer y parsear los nodos, atributos y namespaces de un XML‘.

La estructura del XML es la siguiente:

<?xml version='1.0'  encoding='UTF-8'?>
<nodo_padre>
   <nodo_hijo>
      <valor>valor1</valor>
   </nodo_hijo>
   <nodo_hijo>
      <valor>valor2</valor>
      <valor>valor3</valor>
      <valor>valor4</valor>
   </nodo_hijo>
</nodo_padre>

Con este código vamos a sacar el número de ‘nodos_hijos’:

$xml = simplexml_load_file("017-php-simplexml03.xml");
echo "El número de nodos con nombre 'nodo_hijo' es: " . count($xml->nodo_hijo);
echo "El número de nodos con nombre 'valor' del primer 'nodo_hijo' es: " . count($xml->nodo_hijo->valor);
echo "El número de nodos con nombre 'valor' del 2º 'nodo_hijo' es: " . count($xml->nodo_hijo[1]->valor);

Explico el código:

  • Se carga el XML con la función de PHP simpleXML simplexml_load_file().
  • Con la función de PHP count() sacamos el número de ‘nodo_hijo’, subnodos ‘valor’ del nodo ‘nodo_hijo’ y el número de nodos ‘valor’ del 2º nodo ‘nodo_hijo’.

Si necesitamos automatizar el recuento de nodos… He preparado este código para contar el número de nodos ‘valor’ dentro de los nodos ‘nodo_hijo’.

$xml = simplexml_load_file("017-php-simplexml03.xml");
 foreach ($xml->nodo_hijo as $nodo) 
  {
  echo count($nodo->valor). "<br>";
  }

Podéis verlo funcionando en la misma url del segundo ejemplo anterior.

Otras funciones para trabajar con arrays

Os recomiendo leer este otro post sobre funciones para trabajar con arrays en PHP.

compartir
Publicado por
Aner Barrena