38 – 39 Funzioni built-in array

  • Funzione range (intervallo)
    permette di inserire un intervallo di numeri interi in un vettore.

    <?php
     $vettore=array(15,16,17,18,19,20,21);
     $vettore2=range(15, 21); 
     foreach ($vettore2 as $num)
       echo $num . " ";
    ?>

    Le prime 2 righe fanno la stessa cosa, il foreach mostra il risultato.
    Si può fare anche coi caratteri (anche se in realtà sarebbe una conversioni di numeri), ecco l’alfabeto:

    $alfabeto=range('A', 'Z');
    foreach ($alfabeto as $lettera)
    echo $lettera . " ";

    Ecco invece i codici ASCII (chr sta per valore numerico del character ASCII)

    $setASCII=range(chr(0), chr(255));
    foreach ($setASCII as $lettera)
    echo $lettera . " ";
  • Funzione padding
    aggiunge elementi a destra (se il secondo argomento è positivo) o a sinistra (se negativo) ai numeri contenuti in un array. Il primo argomento indica il vettore sul quale applicare la funzione, il secondo la quantità di elementi da aggiungere, sottraendo quelli già esistenti (in questo caso 10 – 3 = 7), il terzo il carattere da aggiungere (in questo caso uno zero)

     $vettore=array(123, 45, -70);
     $vettore=array_pad($vettore, 10, 0);
     echo $nl;
     foreach ($vettore as $num)
     echo $num . " ";
  • Funzione list
    permette di inserire gli elementi di un array in una lista di variabili:

     $cliente=array("Rossi", "Mario", 45);
     list($cognome, $nome, $eta) = $cliente;
     echo $nl.$cognome." ".$nome." ".$eta.$nl;
  • Funzione array_slice (a fette)
    permette di estrarre dei blocchi di contenuto:

     $cliente2=array("Rossi", "Mario", 45, "via Roma", 7, 17019, "Varazze");
     $indirizzo = array_slice($cliente2, 3, 4);
     stampa($indirizzo);

    Il primo parametro è l’array dal quale estrarre, il secondo è la posizione dalla quale iniziare ad estrarre (offset), il terzo indica il numero di elementi da estrarre (nell’esempio ho estratto l’indirizzo).
    Da notare che ho costruito una funzione personalizzata chiamata stampa che permetterà ogni volta di stampare velocemente gli array. Ecco il codice:

    // creo la funzione stampa il parametro $array è di fantasia
     function stampa($array)
     {
     $nl="<br />";
     foreach ($array as $elemento)
     echo $elemento.$nl;
     }
  • Funzione array_splice
    serve per eliminare degli elementi in un array, il primo parametro è l’array dal quale togliere, il secondo è l’offset, ovvero da che posizione iniziare ad eliminare elementi, il terzo è il numero di elementi da cancellare. Il terzo parametro se non specificato fa cancellare tutti gli elementi restanti dell’array. Supponiamo dall’array di prima di voler eliminare solo l’elemento età:

     $cliente3=array("Rossi", "Mario", 45, "via Roma", 7, 17019, "Varazze");
     $elementiTolti= array_splice($cliente3, 2, 1);
     stampa($elementiTolti);
     echo "--------------".$nl;
     stampa($cliente3);

    da notare che la prima stampa ($elementiTolti) mi visualizza solo gli elementi tolti, utile per una verifica.
    Esiste anche un quarto parametro che serve ad inserire un elemento al posto di quello tolto, es. voglio sostituire l’età 45 col 53:

     $cliente3=array("Rossi", "Mario", 45, "via Roma", 7, 17019, "Varazze");
     $elementiTolti= array_splice($cliente3, 2, 1, 53);
     stampa($cliente3);

    Inoltre posso anche sostituire con più valori:

    $cliente3=array("Rossi", "Mario", 45, "via Roma", 7, 17019, "Varazze");
    $elementiTolti= array_splice($cliente3, 2, 1, array(53,61));
    stampa($cliente3);

    Al posto di 1 valore inserirò un array contente più valori.
    È possibile inserire anche elementi senza toglierne, basta specificare il terzo elemento (numero di elementi da togliere) a zero:

     $cliente3=array("Rossi", "Mario", 45, "via Roma", 7, 17019, "Varazze");
     $elementiTolti= array_splice($cliente3, 2, 0, array(53,61));
     stampa($cliente3);
  • Funzione array_keys
    Usata negli array associativi, serve per estrarre le chiavi al quale gli elementi degli array sono associati. Dato il seguente array associativo:

    $cliente4 = array ("Cognome"=>"Rossi", "Nome"=> "Mario", "Eta"=>45, "Via"=>"via Roma", "Civico"=>7, "Cap"=>17019, "Citta"=>"Varazze");

    ecco la stampa delle (etichette) chiavi:

     $chiavi=array_keys($cliente4);
     stampa($chiavi);

    Per chiarezza di lettura, vado ad aggiungere alla funzione stampa() il comando: echo “————–“.$nl;

  • Funzione array_key_exist
    Controlla se una chiave esiste:

     if(array_key_exists("Civico", $cliente4))
     echo "Il numero civico è presente".$nl;
  • Funzione array_slice per gli array associativi
    alcune funzioni viste prima si possono applicate anche agli array associativi:

     $indirisso=array_slice($cliente4, 3, 4);
     stampa_ass($indirisso)

    $indirizzo diventa un nuovo array associativo. Ho creato una nuova funzione di stampa riservata agli  array associativi:

    function stampa_ass($pippo)
     {
     $nl="<br />";
     foreach ($pippo as $chiave => $elemento)
     echo $elemento.$nl;
     echo "+++++++++++++++++++".$nl;
     }
  • Funzione array_splice per gli array associativi
    Ho creato un array associativo con un solo elemento, da aggiungerlo all’array $cliente4 di prima

    $regione=array("Regione"=>"Liguria");

    con la funzione array_splice vado ad inserire il nuovo elemento regione

     array_splice($cliente4, 7, 1, $regione);
     stampa_ass($cliente4);

    purtroppo una grossa mancanza della funzione array_splice per gli array associativi e che non inserisce la chiave ma solo l’elemento, infatti se faccio una stampa della chiavi la regione non c’è, l’elemento invece si

    $chiavi2=array_keys($cliente4);
    stampa($chiavi);

    fortunatamente online esistono delle funzioni create dagli utenti che permettono di correggere il problema.