PHP 2. Array, operatori, costrutti



Похожие документы
Tipi primitivi. Ad esempio, il codice seguente dichiara una variabile di tipo intero, le assegna il valore 5 e stampa a schermo il suo contenuto:

Nascita di Java. Che cos e Java? Caratteristiche di Java. Java: linguaggio a oggetti

Richiesta pagina PHP (es: index.php)

Concetto di Funzione e Procedura METODI in Java

Obiettivi d esame PHP Developer Fundamentals on MySQL Environment

Introduzione al MATLAB c Parte 2

Inizializzazione, Assegnamento e Distruzione di Classi

Studente (Cognome Nome): Corso di Informatica Corso di Laurea in Ingegneria Gestionale a.a Secondo Compitino 21 Dicembre 2006

3. La sintassi di Java

12 - Introduzione alla Programmazione Orientata agli Oggetti (Object Oriented Programming OOP)

Algebra di Boole: Concetti di base. Fondamenti di Informatica - D. Talia - UNICAL 1. Fondamenti di Informatica

Funzioni in C. Violetta Lonati

PHP e MySQL. Guida scaricata da

Array e WHILE. Array nelle Stringhe. Utilizzare le Funzioni. Funzioni

Laboratorio Progettazione Web Array in PHP Lezione 7. Andrea Marchetti IIT-CNR 2011/2012

XML e PHP. Gestire XML con PHP. Appendice

Indice Configurazione di PHP Test dell ambiente di sviluppo 28

La gestione dell input/output da tastiera La gestione dell input/output da file La gestione delle eccezioni

Corso di Laurea in Ingegneria Gestionale Esame di Informatica a.a settembre 2011

Gli Array (2) Gli Array. Gli Array (4) Gli Array (3)

SOMMARIO Coda (queue): QUEUE. QUEUE : specifica QUEUE

Corso di Informatica Corso di Laurea in Ingegneria Gestionale a.a Secondo Compitino 17 Dicembre 2005

Informatica B. Sezione D. Scuola di Ingegneria Industriale Laurea in Ingegneria Energetica Laurea in Ingegneria Meccanica

Soluzioni degli esercizi di riepilogo (Fondamenti di Informatica 1 Walter Didimo)

Strutture. Strutture e Unioni. Definizione di strutture (2) Definizione di strutture (1)

OBIETTIVI SPECIFICI DI APPRENDIMENTO

Laboratorio di Informatica

Corso di Laurea Ingegneria Informatica Fondamenti di Informatica 2

Scrivere uno script php che, dato un array associativo PERSONE le cui chiavi sono i

dall argomento argomento della malloc()

10 - Programmare con gli Array

Introduzione alla programmazione in C

Laboratorio di Informatica Lezione 2

13 - Gestione della Memoria nella Programmazione Orientata agli Oggetti

L utility Unix awk [Aho-Weinberger-Kernighan]

Programmazione Orientata agli Oggetti in Linguaggio Java

Database. Si ringrazia Marco Bertini per le slides

Corso Online Analista Programmatore Microsoft

Libreria standard Java possiede un enorme libreria di classi standard organizzata in vari package che raccolgono le classi secondo un organizzazione

Gli array. Gli array. Gli array. Classi di memorizzazione per array. Inizializzazione esplicita degli array. Array e puntatori

Uso di JUnit. Fondamenti di informatica Oggetti e Java. JUnit. Luca Cabibbo. ottobre 2012

PHP - Storia. Inizialmente sviluppato da Rasmus Lerdorf come serie di script CGI

Arduino: Programmazione

I file di dati. Unità didattica D1 1

Java:Struttura di Programma. Fabio Scanu a.s. 2014/2015

MATLAB. Caratteristiche. Dati. Esempio di programma MATLAB. a = [1 2 3; 4 5 6; 7 8 9]; b = [1 2 3] ; c = a*b; c

Java: Compilatore e Interprete

Connessione ad internet

Linguaggio C. Fondamenti. Struttura di un programma.

ci sono più problemi che programmi esiste un problema che non si può risolvere con un programma

Linguaggio C - Funzioni

Programmazione in Java Parte I: Fondamenti

Corso di Laurea Ingegneria Informatica Fondamenti di Informatica 2

Sottoprogrammi: astrazione procedurale

Prof. Nicola Cappuccio

Per scrivere una procedura che non deve restituire nessun valore e deve solo contenere le informazioni per le modalità delle porte e controlli

Realizzazione di una classe con un associazione

Funzioni. Il modello console. Interfaccia in modalità console

Algoritmo. I dati su cui opera un'istruzione sono forniti all'algoritmo dall'esterno oppure sono il risultato di istruzioni eseguite precedentemente.

Uso di base delle funzioni in Microsoft Excel

Fondamenti di Informatica e Laboratorio T-AB T-16 Progetti su più file. Funzioni come parametro. Parametri del main

PHP. A. Lorenzi, R. Giupponi, D. Iovino LINGUAGGI WEB. LATO SERVER E MOBILE COMPUTING Atlas. Copyright Istituto Italiano Edizioni Atlas

3 - Variabili. Programmazione e analisi di dati Modulo A: Programmazione in Java. Paolo Milazzo

Informatica A per Ingegneria Gestionale ( ) Il linguaggio HTML. Elisa Quintarelli-Laura Mandelli. HyperText Markup Language

GESTIONE INFORMATICA DEI DATI AZIENDALI

Java Server Pages (JSP) JSP o Servlet? Java Server Pages (JSP) Java Server Pages Costituiscono un estensione della tecnologia delle servlet

Informatica B. Sezione D. Scuola di Ingegneria Industriale Laurea in Ingegneria Energetica Laurea in Ingegneria Meccanica

Uno dei pregi di Java è quello di integrare la documentazione con il codice stesso Formato dei commenti:

Lavorare con MySQL Parte Seconda.

NOZIONI BASE SHELL E SCRIPT LINUX

Corso Analista Programmatore Web PHP Corso Online Analista Programmatore Web PHP

JavaScript. crash course. by Stefano Burigat

La struttura dati ad albero binario

2. Spiegare brevemente qual è la funzione del compilatore e la sua importanza per il programmatore.

Lezione 8. La macchina universale

Algoritmi di Ricerca. Esempi di programmi Java

Siti web centrati sui dati Architettura MVC-2: i JavaBeans

Oggetti Lezione 3. aspetti generali e definizione di classi I

Introduzione al linguaggio C Gli array

Matlab: Strutture di Controllo. Informatica B

costruttori e distruttori

Sistemi Operativi MECCANISMI E POLITICHE DI PROTEZIONE. D. Talia - UNICAL. Sistemi Operativi 13.1

MECCANISMI E POLITICHE DI PROTEZIONE 13.1

Vettori Algoritmi elementari di ordinamento

Prova di Laboratorio di Programmazione

Relazioni tra oggetti e classi : Composizione. Relazioni tra oggetti e classi : esempio di Aggregazione. classe contenitore

Allocazione dinamica della memoria - riepilogo

La prima applicazione Java. Creazione di oggetti - 1. La prima applicazione Java: schema di esecuzione. Gianpaolo Cugola - Sistemi Informativi in Rete

I casi d uso corrispondono ai compiti che l attore (che può essere una persona fisica e non) può svolgere.

Al giorno d oggi, i sistemi per la gestione di database

Automatizzare i compiti ripetitivi. I file batch. File batch (1) File batch (2) Visualizzazione (2) Visualizzazione

void funzioneprova() { int x=2; cout<<"dentro la funzione x="<<x<<endl; }

La connessione php-mysql con MySQLi

Algebra Booleana ed Espressioni Booleane

Транскрипт:

PHP 2 Array, operatori, costrutti 1

Array in PHP Gli array conservano un gruppo di valori che possiamo recuperare o attraverso un numero intero (iniziando dallo 0) oppure attraverso una stringa (array associativi) Esempio $vino['sa'] = "Furore Bianco"; $vino['av'] = "Greco di Tufo"; $vino['na'] = "Biancolella"; Tecnologie di Sviluppo per il WEB 2

Creazione Array Si può creare un array semplicemente inserendo degli elementi in esso $professori[0] = costagliola ; $professori[1] = blundo ; $professori[2] = parente ; equivalente a: $professori[] = costagliola ; $professori[] = blundo ; $professori[] = parente ; La funzione array() serve a creare un array. I parametri passati in input sono usati come elementi dell array $professori = array( costagliola, blundo, parente ); Tecnologie di Sviluppo per il WEB 3

Esempio $spesa = array("mele", "pere", "pane", "latte"); // oppure $spesa[0] = "mele"; $spesa[1] = "pere"; $spesa[2] = "pane"; $spesa[3] = "latte"; // ma anche $spesa[] = "mele"; $spesa[] = "pere"; $spesa[] = "pane"; $spesa[] = "latte"; Tecnologie di Sviluppo per il WEB 4

Accesso ad array La funzione count restituisce la grandezza dell array Per accedere all elemento i-esimo si accede all elemento i-1 $professori[2]; Se si accede ad un elemento non inizializzato non viene generato nessun errore Tecnologie di Sviluppo per il WEB 5

Esempio ESEMPIO <?php $professori[] = "blundo"; $professori[] = "costagliola"; $professori[2] = "parente"; $professori[10] = "d'ambrosio"; printf( L'array contiene %d elementi\n, count($professori)); print( <br> ); for($i=0; $i< count($professori); $i++) { echo $i+1,") "; print(ucwords($professori[$i])); print("<br>"); } echo "Undicesimo elemento: ",$professori[10],"<br>"; echo "Centesimo elemento: ", $professori[99];?> Tecnologie di Sviluppo per il WEB 6

Risultato Tecnologie di Sviluppo per il WEB 7

Nota Invece di scrivere for($i=0; $i< count($professori); $i++) è meglio scrivere $cnt = count($professori); for($i=0; $i<$cnt; $i++) In questo modo la funzione count() è invocata solo una volta e non count($professori) volte Tecnologie di Sviluppo per il WEB 8

Altro modo per creare array Usando l operatore => si possono specificare gli indici dell array per ogni elemento, se non lo si usa l array costruito è indicizzato sugli interi a partire dallo 0 (zero) $frutta = array(1=> mele, 2=> pere, 3=> banane ); Tecnologie di Sviluppo per il WEB 9

Esempio <?php $frutta = array(1=>"mele", 2=>"pere", 3=>"banane"); $cnt=count($frutta); for($i=1; $i<= $cnt; $i++) echo $i, ") ", $frutta[$i], "<br>";?> Tecnologie di Sviluppo per il WEB 10

Esempio di array associativo $corso['blundo'] = tsw1 ; $corso['costagliola'] = tsw2 $corso['parente'] = tsw3 ; Oppure $corso = array('blundo' => 'tsw1', 'costagliola' => tsw2, 'parente' => 'tsw3' ); Tecnologie di Sviluppo per il WEB 11

Accesso ad array associativi Per far riferimento ad un elemento dell array associativo usiamo la seguente sintassi: $corso[parente] $corso['costagliola'] $corso["blundo"] $corso[$nome] Tecnologie di Sviluppo per il WEB 12

Esempio <?php $corso = array('blundo' => 'tsw1', "costagliola" => 'tsw2', 'parente' => 'tsw3'); echo $corso[blundo],"<br>"; echo $corso['costagliola'],"<br>"; echo $corso["parente"],"<br>"; $nome= "blundo"; echo $corso[$nome];?> Tecnologie di Sviluppo per il WEB 13

Accesso alle chiavi (indici) di un array In PHP possiamo accedere anche al valore delle chiavi (indici) di un array associativo senza conoscerle. Si usa la funzione each($nomearray) e le parole chiave key e value $corso e' il nome dell'array: for($i=0; $i< $cnt; $i++) { $riga = each($corso); echo $riga[key], " insegna ", $riga["value"],"<br>"; } ESMPIO Tecnologie di Sviluppo per il WEB 14

La funzione each() Ogni array in PHP conserva traccia del corrente elemento con cui stiamo lavorando Il puntatore all elemento corrente è noto come iteratore La funzione each() restituisce un array associativo che contiene due elementi e muove l iteratore una posizione in avanti Il primo elemento è indicizzato dalla stringa key Il secondo elemento è indicizzato dalla stringa value Tecnologie di Sviluppo per il WEB 15

Altre funzioni su iteratori current() Restituisce il valore dell elemento puntato dall iteratore corrente key() Restituisce la chiave dell elemento corrente reset() Muove l iteratore al primo elemento dell array next() prev() end() Tecnologie di Sviluppo per il WEB 16

Esempio <h2>utilizzo di iteratori su array</h2> <?php $corso = array(blundo => 'tsw1', "parente" => 'tsw2', 'cost' => 'tsw3'); reset($corso); echo "<table border=\"2\">\n"; echo "<tr> <th> Chiave </th> <th> Elemento </th> </tr>\n"; echo "<tr> <td> ", key($corso), "</td> <td>", current($corso), "</td> </tr>\n"; while(next($corso)) { echo "<tr> <td> ", key($corso), "</td> <td>", current($corso), "</td> </tr>\n"; } echo "</table>\n";?> ESEMPIO Tecnologie di Sviluppo per il WEB 17

HTML inviato al client <h2>utilizzo di iteratori su array</h2> <table border="2"> <tr> <th> Chiave </th> <th> Elemento </th> </tr> <tr> <td> blundo</td> <td>tsw1</td> </tr> <tr> <td> parente</td> <td>tsw2</td> </tr> <tr> <td> costagliola</td> <td>tsw3</td> </tr> </table> Tecnologie di Sviluppo per il WEB 18

Ordinare array sort() Ordina i valori dell array (crescente) distrugge il valore delle chiavi asort() Ordina i valori dell array conservando la correlazione tra il valore e la sua chiave ksort() Ordina le chiavi conservando la correlazione tra il valore e la sua chiave rsort() rasort() rksort() Ordinamento in ordine inverso ESEMPIO Tecnologie di Sviluppo per il WEB 19

Ordinare array secondo un proprio ordine usort(nomearray, NomeFunzione) ordina NomeArray secondo il criterio specificato dalla funzione NomeFunzione function cmp ($a, $b) { if ($a == $b) return 0; return ($a < $b)? -1 : 1; } $arr = array (3, 2, 5, 6, 1); usort ($arr, "cmp"); while (list ($chiavve, $vallore) = each ($arr)) { echo "$chiavve: $vallore\n"; } La funzione list copia i valori dell'array nelle vbls Ordinamento crescente di $a Tecnologie di Sviluppo per il WEB 20

Risultato Il risultato dello script precedente è 0: 1 1: 2 2: 3 3: 5 4: 6 E' un esempio, sarebbe stato più opportuno usare la funzione sort() E' spesso usata per array multidimensionali. Tecnologie di Sviluppo per il WEB 21

Nota La funzione di confronto scritta dall utente deve ricevere in input due parametri e restituire un intero Minore di zero se il primo parametro è da considerarsi minore del secondo Uguale a zero se i due parametri sono da considerarsi uguali Maggiore di zero se il primo parametro è da considerarsi maggiore del secondo Tecnologie di Sviluppo per il WEB 22

Array multidimensionali 1 Ogni elemento di un array può essere di tipo qualunque, anche di tipo array Un array multidimensionale è un array che contiene altri array for($i=1; $i < $n; $i++) for($j=1; $j < $n; $j++) $a[$i][$j] = $i * $j; Tecnologie di Sviluppo per il WEB 23

Array multidimensionali 2 $riga0 = array(1, 2, 3); $riga1 = array(4, 5, 6); $riga2 = array(7, 8, 9); $multi = array($riga0, $riga1, $riga2); print_r($multi); /* human readable print */ Tecnologie di Sviluppo per il WEB 24

Ordinare array multipli con usort $products = array( array( 'Tires', 100 ), array( 'Oil', 10 ), array( 'Spark Plugs', 4 )); ordina sulla seconda colonna function compare($x, $y){ if ( $x[1] == $y[1] ) return 0; else if ( $x[1] < $y[1] ) return -1; else return 1; } usort($products, 'compare'); ESEMPIO Tecnologie di Sviluppo per il WEB 25

Funzioni su array (1/2) array_pad(array, nbr_elmnts, value) Restituisce un nuovo array con nbr_elmnts, padded con altri elementi inizializzati allo stesso value. Esempi: $scores = array(3,10); $padded=array_pad($scores, 5,0); $padded è (3,10,0,0,0); $padded=array_pad($scores,-5,0); $padded è (0,0,0,0,0) $scores=array_pad($scores,5,0) modifica in situ Tecnologie di Sviluppo per il WEB 26

Funzioni su array (2/2) array_chunk(array, size [,preserve_keys]) Restituisce un array multidimensionale fatto degli elementi di array. Ogni riga è lunga size preserve_keys: booleano array_slice(array, offset, length) Restituisce un sotto-array di array lungo length a partire dalla posizione offset list($var1, $var2, ) = $array Copia i valori di $array nelle variabili $var1, $var2 array_key_exists(chiave, array) Restituisce un booleano se esiste la chiave nell'array. in_array(valore, array) Booleano: se valore è in array Chunk Tecnologie di Sviluppo per il WEB 27

Esempio di list È usata per assegnare valori ad una lista di variabili in una sola istruzione, i valori sono presi da un array $info = array('caffè', 'scuro', 'caffeina'); // assegna tutte le variabili list($bevanda, $colore, $componente) = $info; // assegna solo in parte list($bevanda,, $componente) = $info; // assegna solo l'ultima variabile list(,, $componente) = $info; Tecnologie di Sviluppo per il WEB 28

Altre funzioni sugli array array_walk(array, func[,terzoprmtr] ) Chiama la funzione func su ogni elemento dell array func deve avere almeno due parametri (opzionalmente tre): il primo identifica il valore dell'elemento; il secondo identifica la chiave; il terzo un parametro generico di func. array_filter(array, func) Restituisce un array. Ogni valore di array è passato a func, l array restituito contiene solo quegli elementi di array per cui la funzione func ha restituito true Tecnologie di Sviluppo per il WEB 29

Esempio di array_walk <h2>utilizzo di funzioni su array</h2> <?php $frutta = array ("uno"=>"limone", "due"=>"arancia", "tre"=>"banana"); function modifica (&$elemento, $chiave, $prefisso) { /* write */ $elemento = "$prefisso:::::::::: $elemento"; } function stampa ($elemento, $chiave) { /* read */ echo "$chiave: $elemento<br>\n"; } echo "<h3>prima...:\n</h3>"; array_walk ($frutta, 'stampa'); array_walk ($frutta, 'modifica', 'frutto'); echo "<h3>... e dopo:\n</h3>"; array_walk ($frutta, 'stampa');?> ESEMPIO Tecnologie di Sviluppo per il WEB 30

Esempio array_filter <h2>utilizzo di array_filter</h2> <?php function dispari($var) { return ($var % 2); } function pari($var) { return (!($var % 2)); } $array1 = array ("a"=>1, "b"=>2, "c"=>3, "d"=>4, "e"=>5); $array2 = array (6, 7, 8, 9, 10, 11, 12); echo "<h3>array iniziali :</h3>\n"; print_r($array1); echo "<br>"; print_r($array2); echo "<h3>applico la funzione 'dispari' al primo array :</h3>\n"; print_r(array_filter($array1, "dispari")); echo "<h3>applico la funzione 'pari' al secondo array:\n</h3>"; print_r(array_filter($array2, "pari"));?> esempiowalkconfilter ESEMPIO Tecnologie di Sviluppo per il WEB 31

Conversione tra variabili e array PHP fornisce due funzioni extract() e compact() che permettono di creare variabili da array e viceversa Si usano con gli array associativi $frutta = array ("uno"=>"limone", "due"=>"arancia", "tre"=>"banana"); extract($frutta); Dopo esistono le variabili $uno, $due e $tre, con i valori limone, arancia e banana, rispettivamente. Tecnologie di Sviluppo per il WEB 32

Nota su extract() Possiamo aggiungere automaticamente un prefisso a tutte le variabili create extract($nomearray, EXTR_PREFIX_SAME, prefisso ) Tutte le variabili che vanno in conflitto con una vbl esistente (con lo stesso nome) inizieranno con prefisso_ extract($frutta, EXTR_PREFIX_SAME, gusto ); echo $gusto_uno; Tecnologie di Sviluppo per il WEB 33

compact() È il complemento di extract() A partire da una lista di variabili, crea un array associativo le cui chiavi sono i nomi delle variabili $nome = "ambrogio"; $cognome = "unz"; $corso = "tsw"; $record = compact('nome', 'cognome', 'corso'); // oppure $chiavi=array(nome, cognome, corso); $record=compact($chiavi); Tecnologie di Sviluppo per il WEB 34

Array e stringhe In PHP esistono due funzioni per passare da una stringa ad un array e viceversa explode() Passa da una stringa ad un array implode() Passa da un array ad una stringa Tecnologie di Sviluppo per il WEB 35

explode() Applicata su una stringa restituisce un array di sottostringhe individuate dal delimitatore Sintassi explode(delimitatore, stringa [, limite]) limite è un parametro opzionale che indica il massimo numero di elementi da estrarre da stringa Esempio $pizza = "mozzarella pomodoro basilico olio"; $ingredienti = explode(" ", $pizza); Tecnologie di Sviluppo per il WEB 36

implode() Applicata ad un array restituisce una stringa rappresentante gli elementi dell array divisi da un separatore Sintassi implode(separatore, array) Esempio $array = array('ambrogio', 'ambunz@unisa.it'); $stringa = implode(",", $array); ESEMPIO Tecnologie di Sviluppo per il WEB 37

Oggetti in PHP PHP supporta la programmazione orientata agli oggetti PHP supporta Incapsulazione Polimorfismo Ereditarietà L ereditarietà multipla è supportata come in JAVA (con le interfacce) Vedremo un esempio di OOP con una classe per MySQL (?) Tecnologie di Sviluppo per il WEB 38

PHP: 5 4 (1) Membri e metodi public private Protected Metodi e Classi Astratte Solo firme, senza implementazioni Interfacce Tecnologie di Sviluppo per il WEB 39

PHP: 5 4 (2) La parola chiave per metodi e membri final Clonare Oggetti function clone() Viene verificato se esiste un tale metodo nella classe. In caso negativo una versione di default viene invocata. Tecnologie di Sviluppo per il WEB 40

PHP: 5 4 (3) Costruttore Unificati function construct() È utile per invocare costruttori di genitori da classi derivate Non c'è bisogno di conoscere il nome Distruttori function destruct() Quando l'ultimo riferimento ad un oggetto è distrutto, il metodo distruttore viene invocato. Non ha parametri Tecnologie di Sviluppo per il WEB 41

PHP: 5 4 (4) Costanti const cstn= HELLO WORLD ; Eccezioni C'è il supporto per la clausola catch all Ma non per quella finally Vbls membri static di Classi Statiche possono ora essere inizializzate Metodi statici Tecnologie di Sviluppo per il WEB 42

PHP: 5 4 (5) Metodo Instanceof Utile per accertarsi se un oggetto è una istanza di una classe, estende una classe oppure implementa un'interfaccia Iterazione <?php class Foo { var $x = 1; var $y = 2; } $obj = new Foo; foreach ($obj as $prp_name => $prop_value) { echo $prp_name = $prop_value\n ; }?> Tecnologie di Sviluppo per il WEB 43

PHP: 5 4 (6) Il nuovo metodo magico tostring() Permette di sovraccaricare la conversione a stringa dell'oggetto Altri dettagli all'url http://www.zend.com/php5/articles/engine2-php5-changes.php Tecnologie di Sviluppo per il WEB 44

Operatori in PHP 1 Aritmetici +, -, *, /, % Assegnamento = (supporta la forma abbreviata: e.g., += ) Incremento/decremento ++ e -- (prefisso/postfisso) Operatori bitwise &,, ^ (xor), ~, <<, >> Tecnologie di Sviluppo per il WEB 45

Operatori in PHP 2 Confronto ==, ===(tipato),!=,!==, <, >, <=, >= Logici &&, and,, or, xor,! Condizionale?: (if aritmetico) Casting (int), (float), (string), (bool), (array), (object) Tecnologie di Sviluppo per il WEB 46

Operatori in PHP 3 Controllo dell errore (@) Quando @ precede un comando, gli errori eventualmente generati sono ignorati Esecuzione (`) La stringa all interno di ` (backtick) è passata alla shell per essere eseguita: $output = `ls -al`; echo "<pre>$output</pre>"; domanda: se tolgo <pre>?? backtick.php Tecnologie di Sviluppo per il WEB 47

Operatori di confronto L operatore == testa se due espressioni sono uguali (anche dopo aver effettuato delle conversioni di tipo) 1 == 1 -> true 1 == 1 -> true L operatore === testa se due espressioni sono identiche (le due espressioni devono essere uguali e dello stesso tipo) 1 === 1 -> true 1 === 1 -> false ESEMPIO Tecnologie di Sviluppo per il WEB 48

Istruzioni per il controllo del flusso 1 if (condizione) istruzioni if(condizione) istruzioni1 else istruzioni2 Tecnologie di Sviluppo per il WEB 49

Istruzioni per il controllo del flusso 2 if(condizione1) istruzioni1 elseif(condizione2) istruzioni2. else istruzionin Tecnologie di Sviluppo per il WEB 50

Istruzioni per il controllo del flusso 3 Istruzione switch switch($a) { case 1: print("a è uguale a uno"); break; case 2: print("a è uguale a due"); break; default: print("a non vale né uno né due"); } Tecnologie di Sviluppo per il WEB 51

Cicli while(condizione) istruzioni do istruzioni while(condizione); for(inizializzazione; condizione; incremento) istruzioni Tecnologie di Sviluppo per il WEB 52

Ciclo foreach Permettere di iterare sugli elementi di un array foreach($nomearray as $elemento) { istruzioni } $elemento assumerà tutti i valori contenuti in $nomearray Tecnologie di Sviluppo per il WEB 53

Ciclo foreach 2 Possiamo scorrere contemporaneamente le chiavi e gli elementi di un array foreach($nomearray as $indice => $elemento) { istruzioni } Le variabili $indice ed $elemento assumeranno, rispettivamente, tutti i valori delle chiavi e degli elementi contenuti in $nomearray Tecnologie di Sviluppo per il WEB 54

exit Termina l esecuzione di uno script Ha un argomento opzionale Se è un numero, indica lo stato di uscita del processo Se è una stringa, viene stampata prima che il processo termini exit() è un sinonimo di die() $handle = @mysql_connect( localhost,$user, $passwd) or die( Connessione fallita ); Tecnologie di Sviluppo per il WEB 55

Includere del codice 1 PHP offre due possibilità per includere un documento (e.g., una libreria) in uno script PHP include e require La differenza principale è che require genera un errore fatale se non si trova il file da includere; mentre, include genera solo un warning Sintassi include NomeFile ; require NomeFile Tecnologie di Sviluppo per il WEB 56

Includere del codice 2 Per sopprimere gli errori possiamo usare @include In genere require è usato per includere delle librerie; mentre, include è usato per includere del codice HTML comune a più documenti Inclusioni di file con estensione.php includono l output dello script quindi... Tecnologie di Sviluppo per il WEB 57

Includere del codice 3 Per cui si usa l estensione.inc per le librerie e l estensione.html per documenti Un modo più efficiente per gestire intestazioni e piè pagina è quello di includere una libreria e poi invocare delle funzioni per generare le parti comuni Se vogliamo essere sicuri che il file sia inserito una sola volta usiamo require_once e include_once Tecnologie di Sviluppo per il WEB 58

Esempio pagina.php <html> <head>.. </head> <body> <?php include header.html ;?> Contenuto HTML <?php include footer.html ;?> </body> </html> Potrebbe andare in un file che viene incluso ESEMPIO Tecnologie di Sviluppo per il WEB 59

Esempio di Libreria <html> <head>.. </head> <body> <?php require_once sito.inc ; genheader();?> Contenuto HTML <?php genfooter();?> </body> </html> Tecnologie di Sviluppo per il WEB 60

Funzioni in PHP 1 La sintassi per definire una funzione in PHP è la seguente: function NomeFunzione([lista parametri]) { implementazione } La lista dei parametri è una sequenza di variabili separate da virgola Non è permesso l overloading Il nome delle funzioni NON è case sensitive È possibile usare un numero variabile di argomenti Inoltre ad ogni parametro può essere assegnato un valore di default...: att.ne (vedi slides successive) Tecnologie di Sviluppo per il WEB 61

Valori di default <?php // il terzo parametro ha un valore di default function descrivi_film($titolo, $regista, $bn_colori = 'colori') { echo "Titolo: $titolo <br>"; echo "Regista: $regista <br>"; echo "B/N - colori: $bn_colori <br>"; } // chiamo la funzione passando 2 soli parametri // il terzo è sottointeso descrivi_film('il malato immaginario','tonino Cervi'); echo '<br>'; // chiamo la funzione passando tutti e 3 i parametri descrivi_film('i soliti ignoti','mario Monicelli','bianco e nero');?> Tecnologie di Sviluppo per il WEB 62

Scope di vlbs: (meravigliati?) 1. <?php 2. function quadrato($a) 3. { 4. $a = $a * $a; 5. } 6. 7. $numero = 2; 8. quadrato($numero); 9. echo $numero; //stampa 2!!! 10.?> Tecnologie di Sviluppo per il WEB 63

Funzioni in PHP 2 Gli argomenti possono essere passati per valore o per riferimento Per passare un argomento per riferimento è sufficiente, nella definizione della funzione, far precedere l argomento da & La chiamata si effettua come al solito Se il nome della funzione è preceduto da &, allora la funzione restituirà un valore per riferimento Tecnologie di Sviluppo per il WEB 64

Funzioni in PHP 3 Le variabili all interno di una funzione sono sempre locali Per accedere alle variabili globali dobbiamo dichiararle con la parola chiave global Le funzioni non conservano memoria della loro esecuzione a meno dell uso di variabili static Una funzione definita in uno script è disponibile ovunque in quello script Per chiarezza è meglio definire le funzioni all inizio, ma non è necessario Tecnologie di Sviluppo per il WEB 65

Funzioni in PHP 4 In aggiunta alle usuali funzioni fornite dai linguaggi di programmazione (manipolazione di array, date e tempo, stringhe, funzioni matematiche, ), PHP supporta un grande numero di funzioni che lo collegano ad altri tipo di software (molte di queste funzioni richiedono una speciale installazione): MySQL, MS SQL, Oracle 8 Shockwave Flash PDF, XML IMAP, POP3, NNTP E tanti altri ancora Tecnologie di Sviluppo per il WEB 66

Funzioni con numero variabile di argomenti Esistono tre funzioni per accedere al numero dei parametri ed ai parametri stessi di una funzione $array = func_get_args(); $num = func_num_args(); $valore = func_get_arg(indice); da 0 a $num-1 Il risultato di uno qualsiasi di queste funzioni non può essere usato direttamente, ma deve sempre essere associato prima ad una variabile Tecnologie di Sviluppo per il WEB 67

Valori restituiti Passati con l istruzione return Per far restituire più valori è sufficiente restituire un array function return_due() { return array( a, 3); } Tecnologie di Sviluppo per il WEB 68

Uso di funzioni anonime (closure), come assegnazioni a variabili. È possibile associare il nome di una funzione ad una variabile e poi invocare la funzione attraverso questa variabile function max($a, $b) { return ($a>$b? $a : $b); } $massimo = max ; $massimo(3,4); //restituisce 4 Tecnologie di Sviluppo per il WEB 69

Ancora funzioni anonime Possiamo crearle con create_function(); Sintassi $valorerestituito = create_function($stringaargomenti, $stringacorpo); Esempio $lambda = create_function( $a, $b, return(strlen($a) strlen($b)); ); Tecnologie di Sviluppo per il WEB 70