Dopo aver visto il perchè delle matrici vorrei continuare a vedere come usare alcune funzioni che ritendo abbastanza utili per manipolare le matrici.
Qui sarò breve nelle spiegazioni anche perchè le funzioni che presento sono molto semplici e non necessitano di molte delucidazioni. L'importante è sapere della loro esistenza.
Abbiamo visto l'uso dei cicli FOR e FOREACH per spazzolare in modo sequenziale le matrici.
Ora vediamo come applicare alcune funzioni quali:
array_reverse() per invertire l'ordine con cui i valori sono stati memorizzati nella matrice
sort() per ordinare in modo crescente (direzione A - Z) i valori memorizzati nella matrice
rsort() per ordinare in modo decrescente (direzione Z - A) i valori memorizzati nella matrice
natcasesort() per ordinare in modo crescente (direzione A - Z) i valori memorizzati nella matrice
array_unique() per estrarre da una matrice i valori in maniera univoca, ossia senza ripetizioni
shuffle() per ordinare in modo casuale i valori memorizzati nella matrice
array_reverse()Abbiamo una matrice creata in questo modo:
<?php
$matrice = array("primo", "secondo", "terzo", "quarto", "quinto", "sesto", "settimo", "ottavo", "nono", "decimo");
?>
Vogliamo che l'output dei valori memorizzati nella matrice inizi dall'ultimo elemento anzichè del primo:
<?php
$nuovoarray = array_reverse ($matrice,TRUE);
foreach ($nuovoarray as $valore) {
echo $valore . "<br />";
}
?>
e questo il risultato
decimo
nono
ottavo
settimo
sesto
quinto
quarto
terzo
secondo
primo
sort()Questa funzione ordina un array. Gli elementi saranno disposti dal più basso al più alto (
A-Z)
<?php
$nuovoarray = $matrice;
sort($nuovoarray);
for ($i=0; $i < count($nuovoarray); $i++) {
echo $nuovoarray[$i] . "<br />";
}
?>
decimo
nono
ottavo
primo
quarto
quinto
secondo
sesto
settimo
terzo
rsort()Questa funzione ordina una matrice in senso inverso (Z-A)
<?php
$nuovoarray = $matrice;
rsort($nuovoarray);
for ($i=0; $i < count($nuovoarray); $i++) {
echo $nuovoarray[$i] . "<br />";
}
?>
con questo risultato:
terzo
settimo
sesto
secondo
quinto
quarto
primo
ottavo
nono
decimoPerò ad usare le due funzioni appena viste c'è un piccolo inconveniente:
se la matrice contiene parole maiuscole e parole minuscole come in questo caso
<?php
$matrice2 = array("primo", "secondo", "terzo", "quarto", "Quinto", "Sesto", "settimo", "ottavo", "nono", "decimo");
?>
usando la funzione sort(), vedremo questo risultato, ossia un doppio elenco formato da parole che iniziano con le maiscole e da parole che iniziano con lettere minuscole
Quinto
Sesto
decimo
nono
ottavo
primo
quarto
secondo
settimo
terzo
natcasesort()Con la funzione natcasesort() si può ordinare nella direzione A - Z una matrice in modo caseinsensitive, ossia senza tener conto delle maiuscole e delle minuscole come dimostrato dal risultato di questo codice:
<?php
$nuovoarray = $matrice2;
natcasesort($nuovoarray);
foreach ($nuovoarray as $valore) {
echo $valore . "<br />";
}
?>
decimo
nono
ottavo
primo
quarto
Quinto
secondo
Sesto
settimo
terzo
array_unique()Un'altra funzione utile è array_unique()
Questa funzione estrae da una matrice tutti i dati in maniera non ripetuta, ossia in maniera univoca.
Vediamo questa matrice:
<?php
$matrice2 = array("primo", "secondo", "terzo", "quarto", "quinto", "sesto", "settimo", "ottavo", "nono", "decimo", "Quarto", "Quinto", "Sesto", "Settimo", "Ottavo", "secondo", "terzo", "quarto", "quinto", "sesto");
?>
Ci sono diverse parole (stringhe) duplicate, ma attenzione anche alle parole maiuscole.........
Applichiamo la funzione
<?php
$nuovoarray = array_unique($matrice2);
foreach ($nuovoarray as $valore) {
echo $valore . "<br />";
}
?>
per ottenere questo
primo
secondo
quinto
settimo
ottavo
nono
decimo
Quarto
Quinto
Sesto
Settimo
Ottavo
terzo
quarto
sestoCome vedete i valori sono stati ridotti, ma le maiuscole persistono ancora nell'elenco finale.
Ho cercato tra le varie funzioni presenti in PHP ma non sono riuscito a trovare una funzione simile case-insensitive (cioè non sensibile al maiuscolo - minuscolo.
Se vedo che l'argomento possa interessare in un prossimo futuro posso dare una mia soluzione.
shuffle() Ma ora chiudiamo, anche per non appesantire troppo l'argomento con una piccola chicca per gli amanti della casualità:
ordinare in modo casuale una matriceIl codice usato per questa funzione è semplice, come quelli fin qui presentati:
$nuovoarray = $matrice2;
shuffle($nuovoarray);
foreach ($nuovoarray as $valore) {
echo $valore . "<br />";
}
che restituisce una cosa del genere:
secondo
primo
Sesto
Quinto
terzo
ottavo
quarto
settimo
decimo
nonoMa anche per questo ho un mio metodo per generare dei numeri casuali ed ordinarli in modo casuale.
Per ora termino qui, quindi