[PHP] Conteggiare arraymultidimensionali

samurai.sette

Utente Attivo
17 Dic 2015
228
6
18
Ciao a tutti. Apro questa discussione per chiedervi un aiuto in merito agli array multidimensionali.
Ho questo array multidimensionale:
PHP:
Array
(
    [0] => Array
        (
            [0] => 2018-12-31
            [1] => 05:57:00
            [2] => -0.001
            [3] => -0.005
            [4] => -0.002
        [5] => -0.008
        [6] => -0.019
        )

    [1] => Array
        (
            [0] => 2018-12-31
            [1] => 06:17:27
            [2] => -0.001
            [3] => -0.005
        )

    [2] => Array
        (
            [0] => 2018-12-31
            [1] => 06:37:55
            [2] => -0.001
            [3] => -0.005
            [4] => -0.004
        )

    [3] => Array
        (
            [0] => 2018-12-31
            [1] => 06:58:22
            [2] => -0.001
        )
)
Come potete vedere ogni chiave ha un numero diverso di elementi. So che per individuare il numero degli elementi c'è il comando "count". Ma come faccio a determinare il numero di elementi presenti in ogni singola chiave? (chiave 0 --> 7 elementi; chiave 1 --> 4 elementi; chiave 2 --> 5 elementi; chiave 3 --> 3 elementi)
Grazie mille, ciao.
 

AC1

Utente Attivo
13 Nov 2017
49
2
8
Barletta
Visto in maniera rapida

Metti dei contatori per ogni chiave

C1 ++ per la chive 1 è così via
 

macus_adi

Utente Attivo
5 Dic 2017
1.302
87
48
IT/SW
Esempio pratico e funzionale allo scopo...
PHP:
function contaElementi($data,&$result=[]){

   if(is_array($data)){
      foreach ($data as $k=>$v){
         if(is_array($v))$result[$k]=count($v);
      }
   }
}
function test_conta_elementi(){
   $a=[
      [1,2,3],
      [1,2,3,4,5,6,7],
      [1,2,3,4,5],
      [1,2],
      [1,2,3,4,5,6,7,8,9,10],
   ];
   $result=[];
   contaElementi($a,$result);
   print_r($result);
}
//la richiami in questo modo
test_conta_elementi()
Nel caso devi effettuare dei cicli basterebbe utilizzare il foreach!
 
  • Like
Reactions: AC1

samurai.sette

Utente Attivo
17 Dic 2015
228
6
18
Ciao ragazzi. Grazie mille, siete stati gentilissimi.
scusate se ne approfitto ma vorrei chiedervi un altro consiglio.
Se da un array multidimensionale (con lo stesso numero di elementi in ciascuna chiave) volessi estrarre in stringhe tutti i dati che si trovano nelle stesse posizioni, come faccio?
Faccio un esempio. Ipotizziamo di avere questo array:
PHP:
Array
(
    [0] => Array
        (
            [0] => 2018-12-31
            [1] => 05:57:00
            [2] => -0.001
            [3] => -0.005
            [4] => -0.002
        )

    [1] => Array
        (
            [0] => 2018-12-31
            [1] => 06:17:27
            [2] => -0.001
            [3] => -0.005
            [4] => -0.003
        )

    [2] => Array
        (
            [0] => 2018-12-31
            [1] => 06:37:55
            [2] => -0.001
            [3] => -0.005
            [4] => -0.004
        )
)
Da questo array vorrei creare delle stringhe 4 stringhe. In ogni stringa vorrei inserire rispettivamente:
Stringa1: date
Stringa2: ore
Stringa3: valori chiave secondaria "2"
.
.
.
Suppongo debba usare un ciclo "for" dentro un altro ciclo "for" ma non riesco a ottenere esattamente quello che vorrei.
Questo è quello he ho scritto:
PHP:
for ($a = 0; $a <= 2; $a ++)
{
    for ($b = 0; $b <= 4; $b ++)
    {
        $stringa = $array[$a][$b];
    }
}
Secondo voi dove sbaglio?
Ciao, grazie mille
 
Ultima modifica:

macus_adi

Utente Attivo
5 Dic 2017
1.302
87
48
IT/SW
Basterebbe utilizzare la map...

PHP:
$mapItems=[0,1,2];
foreach($array as $k=>$v)foreach($mapItems as $item)echo 'Stringa el '.$k.' item  - '.$item.' result ='.$v[$item];
 
  • Like
Reactions: AC1