L’ultima tappa del nostro viaggio alla scoperta delle funzioni di built-in di php è inerente a tutte quelle funzioni che riguardano l’ordinamento, la gestione e, più in generale, le operazioni con i php array.
Ancora una volta precisiamo che in questa guida non troverai tutte le funzioni php esistenti per lavorare con gli array, bensì quelle più utili e che, più probabilmente, potrà capitarti di dover utilizzare in un progetto reale.
Ricordiamo che, nel nostro percorso per imparare PHP, abbiamo già visto come ciclare gli array nella guida inerente ai concetti di sequenza, selezione e iterazione.
Tenendo presente ciò, vediamo un po ‘ di funzioni di built-in che possono tornarci utili.
Contare gli elementi di un array: php array count()
Nel tuo percorso come sviluppatore web in php potrai trovarti davanti alla necessità di sapere quanti elementi sono contenuti in un php array. Nulla di più semplice! La funzione di built-in adatta a questo scopo è count()
Vediamone un’applicazione.
Supponiamo di avere un array che contenga gli iscritti ad un corso php online.
$iscritti = [ ‘Valerio’ , ‘Paola’ , ‘Alessandro’ , ‘Claudia’ , ‘Giada’ , ‘Davide’ , ‘Marco’ , ‘Leo’ ]; echo “il numero di iscritti al corso php online è " . count($iscritti);
Avvalendoci del nostro caro php echo, ciò che otterremo stampato a schermo, sarà “il numero di iscritti al corso php online è 8.” Sapremo quindi, che 8 persone sono interessate ad imparare php!
Estrarre parte di un array: php array_slice()
Immaginiamo, adesso, di voler considerare, della nostra lista di iscritti al corso php online, solo determinate persone: Davide, Marco e Leo, infatti, sono stati fortunati ed hanno diritto ad una scontistica! Come facciamo, però, a suggerire a PHP di prendere in analisi soltanto loro 3?
La funzione che ci permette di estrarre solo una porzione del nostro array è array_slice().
Questa funzione, accetta 3 parametri:
- array di partenza
- l’elemento a partire dal quale inizierà l’estrazione che viene definito offset
- il numero di elementi da estrapolare partendo dall’ elemento di offset, vale a dire la lunghezza della “fetta” di array che ci interessa.
Proviamo a capire meglio utilizzando l’esempio precedente.
$iscritti = [ ‘Valerio’ , ‘Paola’ , ‘Alessandro’ , ‘Claudia’ , ‘Giada’ , ‘Davide’ , ‘Marco’ , ‘Leo’ ]; $output = array_slice($iscritti, 4, 3); print_r ($output);
In questo avremmo detto a PHP di restituire come output Davide, Marco e Leo, vale a dire gli ultimi 3 nomi del nostro array di partenza.
Ricorda! Nei php array si inizia a contare dallo 0. Il primo elemento sarà in posizione 0.
Ecco perchè, nell’esempio di cui sopra, l’ elemento di offset indicato è 4 : php inizierà a contare, dunque, da ‘Giada’ in poi.
Verificare il contenuto di un array: php in_array()
Bene! Ora che abbiamo la nostra lista degli iscritti al corso php online, sappiamo quanti sono e sappiamo perfino quali di loro hanno diritto alla scontistica, pensiamo di poter fare sonni tranquilli e mostrar loro come e perchè imparare php. Attenzione! C’è stato un piccolo problema di comunicazione interna e ci viene richiesto se effettivamente una studentessa di nome Marta è presente nella lista. Come fare a verificare se il nome di Marta è presente nell’array degli iscritti? Niente panico! La funzione adatta in questo caso è in_array() che ci consente, appunto, di verificare il contenuto di un array. Questa funzione accetta due parametri: il valore che stiamo cercando e l’array in cui vogliamo cercarlo. Vediamolo nel codice.
$iscritti = [ ‘Valerio’ , ‘Paola’ , ‘Alessandro’ , ‘Claudia’ , ‘Giada’ , ‘Davide’ , ‘Marco’ , ‘Leo’ ]; if (in_array( ‘Marta’ , $iscritti)) { echo “Marta fa parte degli iscritti al corso php online”; } else { echo “Marta non è tra gli iscritti del corso php online”; }
Otterremo, quindi, come output che Marta non è tra gli iscritti al corso e potremo comunicarlo a chi di dovere!
Ordinamento degli array : php array sort()
Un’ altra tipologia di funzioni di built-in assai utili, è quella che consente di ordinare gli array.
Ci sono diverse funzioni che php mette a disposizione per farlo. Ne vedremo alcuni, rispettivamente inerenti agli array semplici e a quelli associativi (gli array chiave-valore)
Ordinamento di array semplici
L’ ordinamento di array numerici può essere gestito in maniera crescente o decrescente; a seconda di questo fattore le funzioni di built-in da utilizzare saranno:
- sort() consente di ordinare gli array numerici in ordine crescente, dal più piccolo al più grande;
- rsort() è l’esatto inverso della funzione precedente: ordina, dunque, gli array numerici in ordine decrescente;
Ordinamento di array associativi (chiave-valore)
L’ ordinamento di array associativi può essere gestito in maniera crescente o decrescente, e anche alla volontà di gestirli in base al valore o in base alla chiave.
Nel primo caso (in base al valore) le funzioni cui fare riferimento saranno:
- asort() per l’ordine crescente;
- arsort() per l’ordine decrescente;
Nel caso in cui, invece, volessimo procedere all’ordinamento di array associativi in base alla chiave, le funzioni utili saranno:
- ksort() per l’ordine crescente;
- krsort() per l’ordine decrescente;
Unire gli array: php array_merge()
Supponiamo, ora, di avere più di un corso php online.
Alla nostra lista di iscritti, si aggiungeranno altre liste similari. Avremo, dunque, una situazione in cui al nostro array $iscritti andranno ad aggiungersi altri array, quali ad esempio $iscritti2, $iscritti3, e così via.
E se ti dicessimo, che è possibile, ad esempio, avere un unico grande array con tutti gli iscritti alle corsi php del 2022?
A venire in nostro aiuto, in questo caso, è la funzione array_merge(), che ci consente di unire due o più array.
Come funziona? Gli elementi di un array vengono aggiunti in coda a quelli dell’array precedente, e, in caso di valori uguali, l’ultimo sovrascriverà gli altri.
Vediamo un esempio.
(Al fine di non dilungarci troppo, perdendo il focus sull’ effettivo scopo dell’esempio, faremo finta che l’ array $iscritti contenga solo 3 nomi)
$iscritti = [ ‘Valerio’ , ‘Paola’ , ‘Alessandro’ ]; $iscritti2 = [ ‘Miriam’ , ‘Giulia’ ]; $iscritti3 = [ ‘Nina’ , ‘Ottavio’ ]; $iscritti_totali = array_merge($iscritti, $iscritti2, $iscritti3); print_r($iscritti_totali);
Cosa ci restituirà php?
Array ( [0] => Valerio [1] => Paola [2] => Alessandro [3] => Miriam [4] => Giulia [5] => Nina [6] => Ottavio )
Estrapolare chiavi o valori da un array associativo: array_keys() e array_values()
Le ultime due funzioni di built-in php che analizziamo, sono quelle utili ad estrarre chiavi o valori da un array associativo.
Le funzioni da considerare a questo scopo sono due:
- array_keys()
- array_values()
Vediamone un esempio pratico, con un array associativo contenente i nostri docenti e le materie che insegnano :
<?php $teachers = [ 'Davide' => ['PHP', 'Laravel', 'Python'], 'Marco' => ['HTML', 'CSS', 'Javascript', 'Vue'], 'Roberto' => ['PHP', 'Laravel', 'Flutter'], ]; print_r(array_keys($teachers)); print_r(array_values($teachers)); Array ( [0] => Davide [1] => Marco [2] => Roberto ) Array ( [0] => Array ( [0] => PHP [1] => Laravel [2] => Python ) [1] => Array ( [0] => HTML [1] => CSS [2] => Javascript [3] => Vue ) [3] => Array ( [0] => PHP [1] => Laravel [2] => Flutter ) )