venerdì 2 marzo 2018

Come contare un array bidimensionale (php)

L'altro giorno mi sono ritrovato ad affrontare un'esigenza particolare, ovvero quella di dover contare un array bidimensionale in php.
Nel mio caso infatti, per esigenze varie,  al posto di salvare i dati nel classico array, mi sono dovuto cimentare con gli array bidimensionali, salvando i dati in più strati, se così si può dire.

Questo comodo metodo però può avere anche un contro, infatti se si usa la count per contare gli elementi dell'array padre (come spiegato in questo post), il risultato finale non sarà il numero totale dei record presenti nell'array php, ma solo la somma degli elementi presenti nel livello indicato.

Vediamo quindi come calcolare il numero totale di record presenti in array a più dimensioni.


Come contare un array bidimensionale in php


Per poter ottenere il numero totale di record presenti in un array bidimensionale php, ci sono sostanzialmente due metodi.

Ecco il primo:

foreach ($array as $tipo) $totali+=count($tipo);

Ciclando l'array e contando i record presenti infatti, li si può salvare in una variabile numerica (opportunamente inizializzata prima del ciclo).
Ecco un esempio pratico:

<?php
    $array[0]["nome"]="Mario";
    $array[0]["cognome"]="Rossi";
    $array[1]["nome"]="Franco";
    $array[1]["cognome"]="Verdi";
    $totali=0;
    foreach ($array as $tipo) $totali+=count($tipo);
    echo $totali;
?>


Il secondo metodo per contare gli array bidimensionali invece, è ancora più ottimale, e consiste nella seguente sintassi:

$totali=array_sum(array_map("count",$array));

Con ancora meno codice infatti, ed usando le due funzioni php array_sum ed array_map, potremo ottenere il numero di record presenti in un array bidimensionale.
Ecco un esempio pratico:

<?php
    $array[0]["nome"]="Mario";
    $array[0]["cognome"]="Rossi";
    $array[1]["nome"]="Franco";
    $array[1]["cognome"]="Verdi";
    $totali=array_sum(array_map("count",$array));
    echo $totali;
?>


E con il conteggio degli array bidimensionali in php, per oggi è tutto :)

Lascia un commento!