I blog di Alessioempoli

Data 23 ottobre 2017

PHP – 3

Per ingrandire il testo, cliccare sul browser

Per ingrandire le foto, cliccarci sopra

PHP – 3

 

 

# Stampare stringhe: echo e print

In molti degli esempi presentati finora abbiamo avuto la necessità di stampare a schermo delle stringhe o il risultato di qualche operazione. In queste occasioni abbiamo utilizzato il costrutto echo che, insieme al costrutto print, ci permette di scrivere sullo standard output.

 

Stampare stringhe con echo

Il costrutto echo consente di stampare a schermo una o più stringhe. Essendo appunto un costrutto, e non una funzione, non necessita di parentesi per essere richiamato. Analizziamo alcuni esempio del suo utilizzo:

 

1-115K

 

Possiamo anche inserire le variabili direttamente all’interno della stringa, senza concatenarle. In questo caso è necessario delimitare la stringa con il doppio apice ” altrimenti non verrà interpretata la variabile.

 

2-84k

 

Come possiamo notare è necessario aggiungere un = subito dopo l’apertura del tag PHP per stampare automaticamente il valore della variabile.

 

Questa specifica alternativa, per funzionare correttamente, necessita che la direttiva short_open_tag sia abilitata all’interno del nostro php.ini in caso di versioni inferiori alla 5.4.0 del PHP. Dalle versioni successive, invece, <?= è sempre disponibile.

 

Stampare stringhe con print

 

print è un altro costrutto di PHP utilizzato per stampare stringhe sullo standard output. È leggermente meno performante del costrutto echo, ma il funzionamento è molto simile.

La differenza sostanziale tra i due costrutti è che quest’ultimo ha un valore di ritorno booleano mentre il costrutto echo non ha valore di ritorno. Un’altra differenza non meno importante è che print non permette di separare con la virgola diverse stringhe da stampare, ma consente unicamente di concatenarle tra di loro.

Alcuni degli esempi visti in precedenza possono quindi essere realizzati anche con il costrutto print.

 

3-74k

 

 

# Le funzioni di PHP per gestire le stringhe

 

abbiamo visto ad esempio come assegnare una stringa  ad una variabile, come stamparle a schermo, come concatenarle tra di loro o ad altre variabili. PHP mette a disposizione un set completo di funzioni che permettono di manipolare ed eseguire le operazioni su di esse. In seguito verranno analizzate quelle utilizzate più frequentemente.

 

Verificare la lunghezza di una stringa

La prima funzione descritta è probabilmente anche una delle più utilizzate. Per verificare la lunghezza di una stringa possiamo ricorrere alla funzione strlen() che restituirà il numero dei caratteri che la compongono spazi inclusi:

$stringa = ‘Stringa di esempio';

echo strlen($stringa); // restituirà 18

 

Restituire una porzione di una stringa

Un’altra operazione molto comune che si effettua con le stringhe consiste nell’estrarne una parte. Immaginiamo, ad esempio, di voler estrarre i vari elementi di una data, possiamo utilizzare la funzione substr() che prende in ingresso 3 parametri:

 

4-92k

 

Cercare una porzione di testo all’interno di una stringa

 

Spesso si ha la necessità di verificare se una stringa contiene una sottostringa. In questi casi possiamo utilizzare la funzione strpos() che restituisce la posizione della prima occorrenza della stringa ricercata oppure false nel caso non venga trovata alcuna occorrenza. 3parametri in ingresso:

 

5-91k

 

Invertire una stringa

Per effettuare l’inversione (reverse) di una stringa possiamo utilizzare la funzione strrev():

echo strrev(“Hello world!”); // stamperà “!dlrow olleH”

 

 

Sostituire tutte le occorrenze di una stringa

Nel caso in cui si voglia sostituire una porzione di stringa all’interno di un’altra stringa possiamo utilizzare la funzione str_replace(), essa prende in ingresso 4 parametri:

 

6-79k

 

Come per il parametro $subject, anche i primi due parametri possono accogliere un array anziché una semplice stringa.

 

Se $search e $replace sono matrici, allora str_replace() prende i valori da ciascuna matrice e li usa per svolgere la ricerca e la sostituzione in subject. Se $replace ha meno valori di $search, allora si utilizzeranno delle stringhe vuote per completare i rimanenti valori da sostituire. Se $search è una matrice e $replace è una stringa, allora questa stringa di sostituzione sarà utilizzata per ogni valore di $search.

 

$stringa = ‘Dovresti mangiare frutta, verdura e fibre tutti i giorni';

$cibi_sani = array(‘frutta’, ‘verdura’, ‘fibre’);

$cibi_grassi = array(‘pizza’, ‘gelato’, ‘hamburger’);

echo str_replace($cibi_sani, $cibi_grassi, $stringa); // stamperà “Dovresti mangiare

 

 

Suddividere una stringa

Spesso capita di dover separare una stringa in più parti in base ad un carattere separatore, ad esempio lo / nella data vista in uno degli esempi precedenti. In questo caso possiamo usare la funzione explode() che prende in ingresso 3 parametri:

 

7-81k

 

Vediamo come trasformare in una data l’array precedente:

$data = implode(‘/’, $elementi); //conterrà ’01/02/2016′

 

 

Modificare le maiuscole/minuscole

 

PHP mette a disposizione un set di funzioni per modificare le maiuscole/minuscole a seconda dell’esigenza:

 

8-94k

 

Rimuovere spazi all’inizio o alla fine di una stringa

Spesso quando riceviamo delle stringhe in input abbiamo bisogno di ripulirle da spazi o altri caratteri in eccesso ad inizio o fine stringa. Le funzioni a disposizione sono:

 

9-68k

 

# Formattazione delle stringhe in PHP

 

A questo punto siamo sicuramente in grado di creare delle stringhe concatenate. Abbiamo visto che possiamo farlo utilizzando l’operatore . tra più stringhe oppure tra stringhe e variabili:

 

10-40k

 

L’esempio appena proposto ci consente di stampare una breve descrizione di un utente concatenando le informazioni con del testo esplicativo. Noterete però che la concatenazione è piuttosto scomoda da gestire in questi casi. Un altro svantaggio che si ha è quello di aumentare molto la probabilità di commettere errori, come per esempio gli spazi dimenticati tra le stringhe e le variabili.

 

Per risolvere questo problema PHP ci mette a disposizione una funzione molto interessante: sprintf(). Attraverso di essa possiamo generare delle stringhe formattate in maniera più semplice e scrivendo del codice più leggibile. Vediamo come realizzare l’esempio precedente utilizzando la funzione appena introdotta:

 

11-45k

 

Se proviamo ad eseguire tale codice otterremo lo stesso risultato dell’esempio visto in precedenza, ma stavolta esso risulterà di più semplice lettura. La funzione sprinft() ci consente di effettuare delle sostituzioni all’interno di una stringa nei punti in cui inseriamo dei placeholder (“segnaposto”) delimitati dal carattere %.

 

La funzione prende in ingresso almeno due parametri, ma ne accetta tanti quanti sono le sostituzioni da effettuare all’interno della stringa più uno che rappresenta la stringa in cui effettuare la sostituzione.

 

I placeholder che possiamo utilizzare per le sostituzioni devono seguire un formato ben definito in base al tipo di dato che vogliamo stampare. Nell’esempio precedente, infatti, abbiamo visto che in alcuni casi abbiamo utilizzato %s per le stringhe mentre per rappresentare un intero abbiamo impiegato %d. Vediamo quali sono i formati che abbiamo a disposizione:

 

12-120k

 

In questo caso riceveremo come output:

Simone ha ordinato 15 pezzi con uno sconto del 10% per un totale di euro 126.00

 

Osservando con attenzione la stringa contenente il formato di stampa noteremo alcune particolarità:

 

 %% è utilizzato per stampare un simbolo della percentuale;

%.2f è utilizzato per formattare il float nel formato a noi più consono. Nel nostro esempio avevamo bisogno di mostrare il numero con due cifre decimali quindi abbiamo anteposto .2 per indicare il numero di cifre dopo la virgola. Possiamo notare, inoltre, che la funzione ha anche effettuato l’arrotondamento automaticamente.

printf()

Se volessimo stampare direttamente a schermo il risultato potremmo utilizzare la funzione printf() che ha lo stesso funzionamento di sprintf() e, in aggiunta, mostra a schermo la stringa formattata.

printf($formato, $nome, $quantita, $sconto, $totale);

 

 

# Confronto tra stringhe in PHP

 

Abbiamo imparato che attraverso l’operatore == è possibile verificare se due stringhe sono uguali tra loro.

 

13-72k

 

In questo caso la prima stringa ha il primo carattere maiuscolo, non è del tutto identica alla seconda. L’esito del confronto in questo caso sarà negativo e verrà stampato il messaggio “Le stringhe non coincidono“. I confronti tra stringhe in PHP sono quindi case sensitive (letteralmente “sensibili alle maiuscole “).

 

Con PHP è possibile effettuare dei controlli anche per determinare quale delle due stringhe è maggiore o minore. Il confronto viene fatto in base all’ordine alfabetico dei caratteri seguendo l’ordine:

 

– caratteri maiuscoli;

– caratteri minuscoli:

– cifre.

 

Motivo per il quale si avrà:

 

14-53k

 

strcmp e strcasecmp

Gli operatori di confronto non sono l’unico modo per confrontare due stringhe. Il PHP ci fornisce anche con due funzioni specifiche.

 

La funzione strcmp() consente di effettuare gli stessi controlli visti finora, prende in ingresso due parametri che rappresentano le due stringhe e restituiscono un valore intero. Il valore di ritorno è dato da:

 

<0 se la prima stringa è minore della seconda;

=0 se le stringhe coincidono;

0 se la prima stringa è maggiore della seconda;

 

I primi due costrutti di controllo, quindi, possono essere riscritti in questo modo:

 

15-89k

 

Utilizzando strcasecmp() l’esempio precedente ci restituirà il messaggio “Le stringhe sono uguali” in quanto la funzione è case-insensitive.

 

# Gestire le date in PHP

 

Succede molto di frequente di avere la necessità di lavorare con le date. In PHP questo genere di operazioni sono davvero molto semplici grazie alla funzioni a disposizione. Scopriamo insieme le principali.

 

Gestire il timestamp con la funzione time()

Il timestamp è un sistema di misurazione rappresentato da un intero che indica il numero di secondi a partire da una data definita Unix Epoch. In particolare indica il numero di secondi intercorsi dal 1 gennaio 1970 alle ore 00:00 al momento corrente.

 

Per recuperare con PHP il timestamp attuale è sufficiente utilizzare la funzione time().

echo time(); // restituirà un valore simile a 1468536917

 

 

Operazioni con le date

 

Ovviamente non è possibile recuperare solo il timestamp corrente ma anche il timestamp di qualsiasi data. In questo caso ci viene incontro la funzione strtotime(). Essa prende in ingresso una stringa che contiene il riferimento temporale che si vuole convertire:

echo strtotime(‘2015-01-01′); // restituirà 1420066800

 

Questa funzione ci permette di passare anche valori molto vicini al linguaggio naturale e, di convertirli automaticamente:

 

16-60k

 

Formattare una data

Un’altra operazione piuttosto comune è quella di formattare una specifica data in un formato da noi definito. Ad esempio, supponiamo di dover stampare un timestamp nel formato “gg/mm/aaaa h:m:s”, per questo scopo possiamo utilizzare la funzione date():

$timestamp = strtotime(“+1 day”);

echo date(‘d/m/Y H:i:s‘, $timestamp);  // stamperà, ad esempio, 17/07/2016 14:30:14

 

La funzione date() prende in ingresso due parametri:

 

$format: il formato in cui vogliamo stampare la data;

$timestamp: il timestamp della data da stampare; se non viene passato questo valore verrà preso di default il timestamp corrente.

Il formato impiega dei caratteri standard riservati per formattare la data; nell’esempio precedente abbiamo utilizzato:

 

17-98k

 

Vediamo qualche altro esempio di utilizzo della funzione date()

 

echo date(‘Y-m-d H:i:s’); // stamperà 2016-07-16 che rappresenta il formato utilizzato per il DATETIME in MySQL

echo date(‘r’); // stamperà Sat, 16 Jul 2016 14:51:07 +0200

echo date(‘l, j F Y’); // stamperà Saturday, 16 July 2016

 

Abbiamo visto come, con la funzione date(), possiamo rappresentare una data nel formato di cui necessitiamo. Vediamo ora come convertire una data da un formato, ad esempio quello anglosassone, nel nostro formato italiano. Il formato anglosassone è rappresentato come mese/giorno/anno ed è anche il formato standard riconosciuto dalla funzione strtotime(). Convertire quindi una data dal formato anglosassone a quello italiano è piuttosto semplice:

 

18-48k

 

# Le espressioni regolari in PHP

 

Espressioni regolari e pattern

Un’espressione regolare è una stringa, definita pattern, che contiene al suo interno una serie di simboli attraverso i quali è possibile identificare gruppi di stringhe.

 

Proviamo a semplificare la definizione attraverso un esempio. Supponiamo di avere la necessità di verificare che una stringa contenga al suo interno uno username valido per la nostra applicazione, quali sono i controlli da effettuare? Probabilmente almeno i seguenti:

 

– la stringa contiene caratteri alfabetici minuscoli e numeri;

– la stringa può contenere anche i simboli “_” e “-“;

– la stringa deve essere di lunghezza compresa tra 3 e 15 caratteri.

 

Effettuare tutte queste verifiche senza le espressioni regolari (o regex) può risultare piuttosto macchinoso. Come già detto, un’espressione regolare è infatti un insieme di simboli che ci permette di determinare se una stringa rispetta o meno le condizioni dei simboli, ovvero il pattern. Nel caso dell’esempio il pattern per verificare uno username corretto è il seguente:

/^[a-z0-9_-]{3,15}$/

 

Ad un primo sguardo questa serie di caratteri può sembrare incomprensibile ma andiamo a scomporla ed analizzarla.

 

– Innanzitutto in PHP un qualsiasi pattern deve iniziare e terminare con il carattere /.

– Il simbolo ^ indica che la stringa deve iniziare con il pattern indicato. Senza questo simbolo la stringa può fare match, cioè viene identificata dal pattern, se il pattern si trova in qualsiasi punto della stringa.

[a-z0-9_-] indica che i caratteri ammessi sono tutte le lettere minuscole dalla a alla z, i numeri da 0 a 9 e i simboli _ e –

{3,15} indica che deve essere di lunghezza compresa tra 3 e 15

– Il simbolo $ indica che la stringa deve terminare con il pattern appena visto. Non sono quindi ammessi caratteri aggiuntivi al pattern.

 

Validazione delle stringhe con le regex

Ora che abbiamo analizzato alcune delle regole di un’espressione regolare probabilmente ci stiamo chiedendo come fare con PHP a verificare che la stringa sia valida o meno. Per determinarlo possiamo usare la funzione preg_match(). Tale funzione prende in ingresso principalmente tre parametri:

 

– il $pattern;

– il $subject ovvero la stringa da verificare;

$matches ovvero un array in cui, opzionalmente, vengono salvati i risultati della ricerca.

 

L’esempio diventerà quindi:

 

19-41k

 

Dato che lo username passato come parametro è formalmente valido, verrà stampato un messaggio di successo. Se invece $username fosse uguale a Dymissy86 riceveremo un errore perché contiene un carattere maiuscolo.

 

Sintassi PCRE

Le regole delle espressioni regolari appartengono alla famiglia PCRE (Perl Compatible Regular Expressions). Vediamo insieme quali sono i meta caratteri che definiscono la sintassi delle regex.

 

20-141k

Una volta definiti e compresi i meta caratteri possiamo iniziare a lavorare con le espressioni regolari

 

# Utilizzare le espressioni regolari

 

abbiamo visto cos’è un’espressione regolare e come verificare che una stringa sia determinata o meno da una regex. Analizziamo ora le altre funzioni che abbiamo a disposizione in PHP per sfruttare le potenzialità delle espressioni regolari.

 

preg_match

Abbiamo già visto la funzione preg_match. Prima di procedere con le nuove funzioni, analizziamo un dettaglio appena accennato in precedenza : la possibilità di salvare i risultati della ricerca in un array. Prendiamo come esempio la seguente espressione regolare:

/^(\d*)-(\d*)$/

 

La regex è vera se la stringa è formata da due serie di numeri separati da un carattere -. E’ una versione molto semplificata di un’espressione regolare utilizzata per determinare un numero di telefono italiano valido. Stringhe come le seguenti sono quindi valide:

340-12345678

02-12312322

0775-1231233

Supponiamo che dato un numero di telefono si abbia l’esigenza di separare il prefisso dal numero. Possiamo usare la funzione in questo modo:

 

21-43k

 

Come possiamo vedere abbiamo usato un terzo parametro chiamato $result per recuperare le informazioni relative al prefisso ed al numero. Questo perché il terzo parametro conterrà i risultati della ricerca. In particolare $result[0] contiene tutta la stringa che corrisponde al pattern utilizzato, a seguire andranno tutti i criteri contenuti nel pattern: nel nostro caso il primo ed il secondo (\d*).

 

preg_match_all

La funzione preg_match_all è un’estensione della precedente con la differenza che restituisce tutte le occorrenze che corrispondono al pattern utilizzato. Supponiamo di avere una stringa che contiene diversi numeri di telefono che vogliamo salvare in un array:

 

22-61k

 

Ovviamente se provassimo a stampare $result[1] o $result[2] conterranno altri array con il match dei singoli criteri.

 

preg_replace

Un’altra funzione molto utile è la funzione preg_replace con la quale possiamo sostituire le occorrenze di un’espressione regolare con un’altra stringa. La funzione prende in ingresso quattro parametri:

 

23-85k

 

preg_replace_callback

La funzione preg_replace_callback si occupa anch’essa di effettuare delle sostituzioni con la differenza che prende in ingresso una funzione di callback per effettuarle.

 

24-116k

 

Nel codice che abbiamo appena visto abbiamo utilizzato la funzione youtubeEmbedCallback per effettuare le sostituzioni. Al suo interno troviamo un’espressione regolare un po’ complessa che ci consente di recuperare tutte le differenti tipologie di link di YouTube. Data l’espressione regolare, attraverso preg_replace_callback sostituiamo il link di YouTube con un codice HTML che possiamo inserire all’interno delle nostre pagine Web.

 

# Array in PHP

 

Possiamo descrivere un array come una matrice matematica. In termini più semplici può essere considerato una collezione di elementi ognuno identificato da un indice; gli indici di un array possono essere numerici o stringhe. Gli elementi dell’array possono contenere al proprio interno qualsiasi tipo di dato, compresi oggetti o altri array.

 

Un array può essere definito in due modi equivalenti:

 

25-86k

 

Un array è quindi un contenitore di elementi contraddistinti da un indice. Se l’indice non viene esplicitato di default è di tipo numerico 0-based. 0-based sta ad indicare che l’indice dell’array inizierà da 0 anziché da 1. Come abbiamo potuto vedere nell’output dell’esempio precedente, il primo elemento dell’array (banana) possedeva infatti l’indice con valore 0.

 

Nel caso di array con indice numerico è possibile accedere ai singoli elementi attraverso il proprio indice:

$frutti = [‘banana’, ‘pesca’, ‘lampone’];

echoIl mio frutto preferito è il ” . $frutti[2];

 

L’esempio stamperà Il mio frutto preferito è il lampone perché ho deciso di stampare il terzo (indice 2 partendo da 0) elemento dell’array.

 

Array associativo

Un altro modo molto di utilizzare gli array è quello di sfruttare gli indici come stringhe anziché come valore numerico:

 

26-98k

 

Un array può contenere ulteriori array, in questo caso potremmo avere una situazione come la seguente:

 

27-85k

 

Richiamando print_r() sull’array avremo in output:

 

28-63k

 

Aggiungere o modificare il valore di un elemento

Nello stesso modo in cui possiamo accedere al contenuto di un elemento di un array possiamo anche modificarne il valore. Quindi riprendendo l’array $partecipanti, supponendo di voler modificare la mail di uno degli utenti possiamo operare in questo modo:

 

29-77k

 

E’ sufficiente richiamare l’array indicandogli il nuovo indice ed il valore che conterrà. Richiamando print_r() sull’array avremo:

 

30-70k

 

# Le funzioni PHP per gestire gli array

 

Ciclare gli elementi di un array

Abbiamo già analizzato in maniera molto approfondita come accedere agli elementi di un array e ciclarli attraverso il costrutto foreach. Per maggiori informazioni si può consultare l’articolo  relativa ai cicli foreach in PHP.

 

Contare gli elementi in un array

Supponiamo di avere un array di iscritti ad un evento e di volerne ottenere il numero, la funzione count() è esattamente quello di cui abbiamo bisogno:

 

31-46k

 

 

Verificare che un elemento sia contenuto in un array

Dato l’array precedente, supponiamo di voler verificare che l’utente Simone sia uno dei partecipanti, possiamo utilizzare la funzione in_array() che prende in ingresso due parametri:

 

– il valore ricercato;

– l’array in cui cercare.

 

Vediamo un esempio:

 

32-47k

 

Nel nostro caso l’output sarà: Simone è uno dei partecipanti.

 

Mescolare gli elementi di un array

Nel caso in cui avessimo la necessità di mescolare gli elementi all’interno di un array, abbiamo a disposizione la funzione shuffle() che fa esattamente al caso nostro:

 

33-51k

 

Invertire l’ordine degli elementi

Un’altra funzione molto comune che possiamo applicare ad un array è quella di invertire l’ordine degli elementi. Vediamo un esempio con la funzione array_reverse():

 

34-57k

 

Unire due array

Dati due o più array, attraverso la funzione array_merge() possiamo avere un unico array che contiene gli elementi di ognuno di essi. L’inserimento avviene in maniera da aggiungere gli elementi in coda all’array precedente. In caso di valori uguali l’ultimo valore andrà a sovrascrivere i precedenti.

 

Vediamo qualche esempio per chiarire i concetti:

 

35-64k

 

Vediamo cosa succede se abbiamo array con valori uguali. Prendiamo come esempio array con chiavi alfanumeriche così da avere un esempio esplicito del funzionamento:

 

36-59k

 

Osservando con attenzione i due array noteremo sicuramente che ci sono due chiavi con valore Simone. In questo caso il risultato sarà un array di soli tre elementi e non quattro e il valore di quella chiave è l’ultimo in ordine di inserimento:

 

37-73k

 

Estrarre una porzione di un array

 

Nel caso in cui volessimo estrarre solo alcuni elementi da un array possiamo usare la funzione array_slice() che prende in ingresso tre parametri:

 

– l’array;

– l‘offset, ovvero l’elemento da cui iniziare l’estrazione;

– la lunghezza, ovvero il numero di elementi da estrarre a partire dall’offset.

 

Vediamo un esempio:

 

38-48k

 

Estrarre le chiavi o i valori da un array multidimensionale

 

Dato un array multidimensionale con coppie chiave/valori abbiamo a disposizione due funzioni, array_keys() e array_values(), che ci permettono rispettivamente di restituire un array di chiavi e di valori dell’array.

 

39-100k

 

#  Funzioni personalizzate in PHP

 

Le funzioni sono uno degli strumenti più importanti a disposizione in un linguaggio di programmazione. Finora abbiamo visto quelle predefinite che PHP mette a disposizione nativamente, come per esempio le funzioni per manipolare le stringhe o gli array.

 

Ora impareremo a creare nostre funzioni da zero (funzioni UDF o user-defined functions). Prima di procedere, però, diamo una definizione di funzione:

 

Una funzione è un insieme di istruzioni che consentono di eseguire una determinata operazione.

Una funzione può prendere in ingresso dei parametri e restituire un risultato. Sia l’input che l’output sono opzionali, possono esistere funzioni che eseguono delle istruzioni senza bisogno di parametri e senza bisogno di restituire un valore di ritorno.

 

Creare una funzione

Una semplice funzione può essere definita come segue:

 

40-40k

 

Il codice che abbiamo visto crea una funzione chiamata somma che restituisce appunto la somma di due parametri. Vediamo in dettaglio come definire una funzione:

 

– una funzione inizia sempre con la parola riservata function;

– deve seguire il nome che vogliamo dare alla funzione, in questo caso somma, il nome deve essere univoco e non può essere uguale ad una delle funzioni già messe a disposizione da PHP;

– deve contenere i parametri in ingresso all’interno di parentesi tonde, nel nostro caso $a e $b, nel caso in cui non ci siano parametri è sufficiente usare le sole parentesi tonde;

– tutte le istruzioni devono essere racchiuse all’interno di parentesi graffe {};

– nel caso in cui la funziona restituisca un risultato, esso deve essere restituito con la parola riservata return.

 

Per eseguire una funzione da noi creata la modalìtà è la stessa con cui richiamiamo le funzioni native di PHP, cioè richiamandola nel punto in cui vogliamo eseguirla:

echoLa somma di 5 e 4 è: ” . somma(5, 4);

 

 

 

L’esempio in alto restituirà come output:

La somma di 5 e 4 è: 9

 

I parametri passati in ingresso ad una funzione possono anche essere opzionali se definiamo un valore di default. Supponiamo che il secondo parametro della funziona sia opzionale e, se non definito, sia di default 10, potremmo a quel punto richiamare la nostra funzione passando solo il primo parametro. Automaticamente PHP sommerà al nostro primo parametro il valore 10:

 

41-52k

 

Ora che abbiamo visto come creare una funzione e come definire parametri opzionali possiamo provare a creane una leggermente più complessa.

Supponiamo di voler creare una funzione che, dato in ingresso un array di interi ed un valore numerico, restituisca l’array con i valori moltiplicati per il secondo parametro.

Avremo bisogno di ciclare l’array (chiamiamolo $array) e di moltiplicarne il valore dei singoli elementi per un secondo parametro (chiamiamolo $moltiplicatore). A questo punto la funzione restituirà un nuovo array.

 

42-71k

 

ovvero i singoli valori dell’array iniziale moltiplicati per 5. Se invece richiamassimo la funzione senza il secondo parametro, i valori dell’array restituito verranno moltiplicati per 2.

 

Funzioni anonime

Abbiamo appena visto che per creare una funzione è necessario definine un nome univoco. In realtà non è del tutto vero e possiamo creare anche funzioni anonime che possono essere utilizzate in casi particolari dove, ad esempio, la funzione viene passata come parametro ad un’altra funzione. È sconsigliabile invece utilizzarla nel caso di funzioni da richiamare in più punti della nostra applicazione, non avendo un nome sarebbe impossibile richiamarla.

 

Per vedere un esempio di utilizzo di funzioni anonime riprendiamo la lezione relativa alle espressioni regolari. Nella lezione abbiamo introdotto la funzione preg_replace_callback() che si occupa di effettuare delle sostituzioni in una stringa attraverso una funzione di callback. L’esempio che avevamo utilizzato in quel caso era quello di trasformare una URL di YouTube nel suo codice di embed per mostrarlo all’interno di una pagina. Lo script era il seguente:

 

43-67k

 

Essa prende in ingresso come secondo parametro il nome della funzione da utilizzare per le sostituzioni. Questo è un classico esempio in cui è utile una funzione anonima: anziché passare il nome di una funzione e definirla in precedenza, possiamo passarne direttamente una anonima. Vediamo l’esempio:

 

44-59k

 

Come abbiamo visto dal codice, la funzione viene definita senza nome ma con gli stessi parametri che vengono passati nel primo esempio.

 

(CONTINUA)

 

 

 

 

 

 

5 Risposte a “PHP – 3”

  1. flow scrive:

    Wonderful website. Lots of helpful info here.

    I’m sending it to a few friends ans also sharing іn delicious.
    And obvioᥙsly, thanks in your effort!

  2. math scrive:

    Ꮤhats up very nice site!! Man .. Beautiful ..

    Amazing .. I’ll bookmark your blog and take the feeds also?

    I am glaɗ to ѕearch out so many useful info һere іn the
    post, we want develop extra stratеgies in this regard, thank you fօr sharing.
    . . . . .

  3. device scrive:

    This іs my first time pay a visit at here and i am trᥙly
    happy to read all at single place.

  4. click the up coming website page scrive:

    I intended to send you a very small observation to say thanks the moment again on the awesome thoughts you’ve featured in this article. It has been so shockingly generous with you to provide publicly what many individuals would’ve sold for an electronic book to end up making some bucks for themselves, particularly considering the fact that you could have tried it if you ever desired. The thoughts likewise served to become a fantastic way to know that other people have the identical zeal the same as mine to see a good deal more when considering this condition. I’m certain there are millions of more pleasant times in the future for individuals that read through your website.
    _____
    TY!

  5. garland cramp scrive:

    Ottimo modo di spiegare.

Lascia una risposta