40 – 41 Funzioni built-in 2 array ed include

Il comando include, permette di richiamare un file php esterno e di includerne il suo codice all’interno del nostro file.

 <?php include("utility.php") ?>

Ora creiamo il file utility.php con inserite le 2 funzioni di stampa array viste nell’articolo precedente e la variabile $nl per la riga vuota.

<?php
  $nl="<br />";
// creo la funzione stampa. Il parametro $array è di fantasia
 function stampa($array)
 {
 $nl="<br />";
 foreach ($array as $elemento)
 echo $elemento.$nl;
 echo "-------------------".$nl;
 } 
// creo la funzione stampa per gli array associativi.
 function stampa_ass($pippo)
 {
 $nl="<br />";
 foreach ($pippo as $chiave => $elemento)
 echo $elemento.$nl;
 echo "+++++++++++++++++++".$nl;
 }
?>

Questo codice verrà caricato ogni volta che il file utility.php verrà incluso.

Ora creiamo il seguente file:

<?php include("utility.php") ?>
<?php
 $vettore1=array(15,16,17,18,19,20,21);
 $vettore2=range(15, 21);
 
 $cliente1=array("Rossi", "Mario", 45, "via Roma", 7, 17019, "Varazze");

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

andando avanti con le funzioni sugli array:

  • extract
    estrai gli elementi di un array. Negli associativi, per ogni elemento estratto crea una corrispondente variabile con il nome della sua chiave.

    extract($cliente2);
    echo $Nome. " ". $Cognome.$nl;

    eseguendo la stampa delle variabili generate mi accorgo che $Nome esisteva già e il suo valore è stato sovrascritto con quello estratto dall’array associativo $cliente2. Per fare in modo che una variabile non venga sovrascritta in caso di omonimia, esistono delle costanti predefinite da inserire nella funzione extract. Una di queste è EXTR_PREFIX_ALL che va ad aggiungere un prefisso davanti al nome delle variabili create dall’estrazione delle chiavi dell’array assocativo. Il prefisso si indica dopo una virgola racchiuso

    extract($cliente2, EXTR_PREFIX_ALL , "cli2");

    Tra il prefisso ed il nome, viene aggiunto un underscore _:

     extract($cliente2, EXTR_PREFIX_ALL , "cli2");
     echo $Nome. " ". $cli2_Nome. " ". $cli2_Cognome.$nl;
  • compact
    È la complementare di extract, crea un array partendo da delle variabili.

     $cliente3=compact("Cognome", "Nome");
     echo $cliente3['Cognome']. " ". $cliente3['Nome']. $nl;
  • array_walk
    crea un ciclo estraendo i dati da un array, indicato come primo argomento e li passa ad una funzione inserita come secondo argomento:

    <table>
     <tr> <?php array_walk($cliente1, "cellaTabella"); ?></tr>
    </table>

    l’array $cliente1 l’avevamo creato in partenza:

    $cliente1=array("Rossi", "Mario", 45, "via Roma", 7, 17019, "Varazze");

    i dati che array_walk estrae $cliente1 li passa alla funzione cellaTabella che andremo a creare:

    function cellaTabella($valoreCella)
     {
     echo "<td style='border: 1px solid red;'> $valoreCella </td>\n";
     }

    In questo modo con un semplice comando verrà creata una riga <td> contenente tutti i valori <td> con i dati estratti dall’array $cliente1

  • in_array
    controlla se un valore è presente in un array. Il primo argomento è il valore da cercare (Mario), il secondo è l’array dove cercarlo $cliente1:

     if (in_array("Mario", $cliente1) )
     echo "Trovato!".$nl;
  • sort
    ordina un array:

     $vettore1=array(15,16,17,2,18,19,7,20,21);
     $vettore2=range(15, 21);
     
     echo "Array non ordinato".$nl;
     stampa($vettore1)

    Prima effettuo la stampa disordinata, poi quella ordinata:

     sort($vettore1);
     echo "Array ordinato".$nl;
     stampa($vettore1);

    Esiste anche la funzione rsort (revert sort) che inverte l’ordinamento

     rsort($vettore1);
     echo "Array ordinato".$nl;
     stampa($vettore1);
  • asort
    Riordina gli array associativi (associative sort):

     arsort($cliente2);
     echo "Array associativo ordinato".$nl;
     stampa_ass($cliente2);

    L’ordinamento viene fatto in base all’ordine alfabetico dei valori.

  • ksort
    Effettua l’ordinamento in base all’ordine alfabetico delle chiavi dell’array associativo:

    krsort($cliente2);
     echo "Array associativo ordinato".$nl;
     stampa_ass($cliente2);
  • usort, uasort, uksort
    Si effettuano degli ordinamenti in base a dei controlli che posso definire (magari con delle funzioni che specificano cosa è maggiore e cosa è minore) e poi useremo usort (user define sort) per gli array, uasort per quelli associativi, uksort per gli associativi in base alla chiave.
  • array_sum
    fa la somma dei valori di un array:

     $totale=array_sum($vettore1);
     echo "Totale: " . $totale.$nl;
  • array_merge
    unisce 2 array:

     $v3=array_merge($vettore1, $vettore2);
     stampa($v3);