JavascriptProva

mercoledì 2 maggio 2018

Array indicizzati e associativi, e costrutti iterativi applicabili, in php

Ci sono dunque tre tipi di array in php:
  • indexed
  • associativo
  • multidimensionale

Cominciamo con gli indexed...

Vado a memoria nel creare un array:
<?php
$nani=array("Mammolo","Gongolo","Cucciolo","Pisolo","Brontolo","Dotto","Eolo");

echo "I nani di Biancaneve sono ".count($nani)."<br>";

echo "I loro nomi sono: ";
for($n=0;$n<count($nani);$n++){
    echo "$nani[$n],";
}

?> 
I nani di Biancaneve sono 7
I loro nomi sono: Mammolo,Gongolo,Cucciolo,Pisolo,Brontolo,Dotto,Eolo,

E ho usato la funzione count() e un ciclo for per contare gli elementi dell'array e navigarci in mezzo.


Ora la cosa più difficile: degli array che non hanno un indice numerico ma una variabile.
Per prima cosa, mi rivedrei i cicli foreach, che qui vanno senz'altro applicati.
Applico foreach a un array indicizzato.
<?php
$matrice=array("uno","due","tre","quattro");

foreach($matrice as $value){
    echo "$value<br>";
}


?> 
uno
due
tre
quattro



Se voglio far apparire anche l'indice:
<?php
$matrice=array("uno","due","tre","quattro");

foreach($matrice as $x=>$value){
    echo "$value<br>";
}
?> 
uno
due
tre
quattro
Così l'indice non appare, ma dal momento che ho eguagliato $matrice a $x=>$value posso far apparire anche l'indice:
<?php
$matrice=array("uno","due","tre","quattro");

foreach($matrice as $x=>$value){
    echo "$x $value<br>";
}
?> 
0 uno
1 due
2 tre
3 quattro
Ecco: eguagliando $matrice a $x=>$value ho compreso in essa anche l'indice.
Stessa cosa posso fare per un array associativo.

Creo un array associativo (in questo tipo di array sarebbe il caso di far apparire anche l'indice)
$dei = array("Zeus"=>"Fulmine","Ares"=>"Guerra","Afrodite"=>"Amore","Dioniso"=>"Vino","Atena"=>"Sapienza");
Ora voglio elencarli tutti, facendo apparire anche l'indice che in questo caso è il nome del dio.
<?php
$dei = array("Zeus"=>"Fulmine","Ares"=>"Guerra","Afrodite"=>"Amore","Dioniso"=>"Vino","Atena"=>"Sapienza");

foreach($dei as $nome=>$competenza){
    echo "$nome: $competenza<br>";
}
Zeus: Fulmine
Ares: Guerra
Afrodite: Amore
Dioniso: Vino
Atena: Sapienza

Ecco, appunto, come volevo.
Il for è applicabile solo agli array indicizzati perché hanno come indice un numero, mentre il foreach è applicabile sia agli array indicizzati che a quelli associativi.

Nessun commento:

Posta un commento