PHP: Array
• Array = variabile che contiene un insieme (ordinato) di elementi
flauto
violino
oboe
liuto
$strumenti
Array Indicizzati Numericamente
• Creazione di array mediante enumerazione dei suoi elementi:
• Creazione di array mediante assegnamento con un altro array:
$strumenti = array('flauto', 'violino', 'oboe', 'liuto');
$a = $strumenti;
$numeri = range(1, 10); $numeri = array(1,2,3,4,5,6,7,8,9,10);
$lettere = range('a', 'z'); $lettere = array('a','b', ..., 'z');
Array Indicizzati Numericamente (ii)
• Accesso di un elemento dell’array: mediante nome-array + indice
echo $strumenti[2]; oboe
flauto
violino
oboe
liuto 0
1
2
3
flauto
violino
Array Indicizzati Numericamente (iii)
• Creazione 'incrementale' di array:
• Accesso agli elementi dell’array mediante cicli:
$strumenti[0] = 'flauto';
$strumenti[1] = 'violino';
$strumenti[2] = 'oboe';
$strumenti[3] = 'liuto';
for($i=0; $i<4; $i++)
echo "$strumenti[$i] ";
flauto violino oboe liuto foreach($strumenti as $strumento)
echo "$strumento ";
Array Indicizzati Associativamente
• Indice rappresentato da un nome (chiave):
2500
8000
5400
11000 flauto
violino
oboe
liuto
$prezzi = array('flauto'=>2500, 'violino'=>8000, 'oboe'=>5400, 'liuto'=>11000);
Array Indicizzati Associativamente (ii)
• Accesso agli elementi dell’array: mediante nome-array + chiave
echo $prezzi['oboe']; 5400
2500
8000
5400
11000 flauto
violino
oboe
liuto
Array Indicizzati Associativamente (iii)
• Creazione 'incrementale' di array associativo:
• Accesso agli elementi dell’array associativo mediante cicli:
$prezzi['flauto'] = 2500;
$prezzi['violino'] = 8000;
$prezzi['oboe'] = 5400;
$prezzi['liuto'] = 11000;
2500 8000 5400 11000 foreach($prezzi as $prezzo)
echo "$prezzo ";
Operatori per Array
Simbolo Nome Esempio Risultato
+ Unione $a + $b Concatenazione di $a con gli elementi di $b che hanno indici diversi da quelli in $a
== Uguaglianza $a == $b Uguaglianza di $a e $b
=== Identità $a === $b Identità di $a e $b
!= Disuguaglianza $a != $b Disguaglianza di $a e $b
!== Non identità $a !== $b Non identità di $a e $b
$a = array(1,2,3);
$b = array(4,5,6,7,8);
$c = array('1','2','3');
$a + $b: (1,2,3,7,8)
$a == $b: false
$a == $c: true
$a === $c: false
Array Multidimensionali
• Indicizzazione numerica:
FLT flauto 2500 VLN violino 8000
OBO oboe 5400
LUT liuto 11000
$articoli = array(array('FLT','flauto', 2500), array('VLN', 'violino', 8000), array('OBO', 'oboe', 5400), array('LUT', 'liuto',11000));
Array Multidimensionali (ii)
• Accesso mediante ciclo for:
for($riga=0; $riga<4; $riga++) {
for($colonna=0; $colonna<3; $colonna++) echo $articoli[$riga][$colonna] . ' ';
echo '<br />';
}
FLT flauto 2500 VLN violino 8000 OBO oboe 5400 LUT liuto 11000
FLT flauto 2500 VLN violino 8000
OBO oboe 5400
LUT liuto 11000
$riga
$colonna
Array Multidimensionali (iii)
• Indicizzazione mista:
codice strumento prezzo FLT flauto 2500 VLN violino 8000
OBO oboe 5400
LUT liuto 11000
$articoli = array(array('codice'=>'FLT',
'strumento'=>'flauto', 'prezzo'=>2500),
array('codice'=>'VLN',
'strumento'=> 'violino', 'prezzo'=>8000),
array('codice'=>'OBO',
'strumento'=>'oboe', 'prezzo'=>5400),
array('codice'=>'LUT',
'strumento'=>'liuto', 'prezzo'=> 11000));
Array Multidimensionali (iv)
• Accesso mediante ciclo foreach:
foreach($articoli as $articolo) {
foreach($articolo as $indice => $contenuto) echo "$indice: $contenuto ";
echo '<br />';
}
codice: FLT strumento: flauto prezzo: 2500 codice: VLN strumento: violino prezzo: 8000 codice: OBO strumento: oboe prezzo: 5400 codice: LUT strumento: liuto prezzo: 11000
codice strumento prezzo FLT flauto 2500 VLN violino 8000
OBO oboe 5400
LUT liuto 11000
$articolo
Ordinamento di Array
• Ordinamento di array indicizzati numericamente: sort()
$strumenti = array('flauto', 'violino', 'oboe', 'liuto');
sort($strumenti);
flauto liuto oboe violino flauto
violino oboe
liuto
Ordinamento di Array (ii)
• Ordinamento di array indirizzati associativamente: ksort() e asort()
$prezzi = array('flauto'=>2500, 'violino'=>8000, 'oboe'=>5400, 'liuto'=>11000);
ksort($prezzi);
2500 8000 5400 11000 flauto
violino oboe
liuto 2500
11000 5400 8000 flauto
liuto oboe
violino 2500
5400 8000 flauto
oboe violino
Ordinamento di Array (iii)
• Ordinamento di array in ordine inverso: rsort(), krsort() e arsort()
rsort($strumenti);
flauto violino
oboe liuto
violino oboe
liuto flauto
krsort($prezzi);
2500 8000 5400 11000 flauto
violino oboe
liuto
8000 5400 11000
2500 violino
oboe liuto flauto
Riordinamento Casuale di Array: shuffle.php
• shuffle($a): riordina casualmente gli elementi di $a
<?php
$quadri = array('babakar.jpg', 'giardino.jpg', 'grano.jpg', 'infiore.jpg', 'mosaico.jpg', 'kand.jpg', 'kand2.jpg', 'kand3.jpg', 'kand4.jpg', 'kand5.jpg',
'kand6.jpg', 'pic1.jpg','pic2.jpg', 'pic3.jpg', 'ramo.jpg', 'van1.jpg', 'van2.jpg', 'van3.jpg', 'van4.jpg', 'van5.jpg');
shuffle($quadri);
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
<title>Pinacoteca Virtuale</title>
</head>
<body>
<h1>Pinacoteca Virtuale</h1>
<table width="100%">
<tr>
<?php
for($i=0; $i<3; $i++) {
echo "<td align='center'><img src='../immagini/$quadri[$i]' height='100'></td>";
}
Riordinamento Casuale di Array: shuffle.php (ii)
Inversione di Array
• array_reverse($a): genera un array inverso di $a
flauto violino
oboe liuto
$inv_str = array_reverse($strumenti);
liuto oboe violino
flauto
codice strumento prezzo FLT flauto 2500 VLN violino 8000
$inv_art = array_reverse($articoli);
codice strumento prezzo LUT liuto 11000
OBO oboe 5400
Conteggio degli Elementi in Array
• count($a): restituisce il numero di elementi dell’array $a
• array_count_values($a): restituisce una array associativo che indica la frequenza di ogni elemento nell’array $a
(gli elementi di $a devono essere scalari)
echo count($strumenti);
flauto violino
oboe liuto
4
flauto violino
flauto
flauto flauto 3
Conversione di Array Associativi in Variabili Scalari
• extract(array a [, int tipologia [, string prefisso]]):
genera un insieme di variabili omonime delle chiavi di a
• Parametri opzionali:
tipologia: tipologia di gestione delle collisioni (default: sovrascrittura)
prefisso: rilevante per certe tipologie di collisione
2500 8000 5400 11000 flauto
violino oboe
liuto extract($prezzi);
echo "$flauto $violino $oboe $liuto" 2500 8000 5400 11000
Tipologia Significato
EXTR_OVERWRITE Sovrascrive le variabili in caso di collisione EXTR_SKIP Salta l’elemento che provoca la collisione
EXTR_PREFIX_SAME Crea una variabile $prefisso_chiave solo in caso di collisione
EXTR_PREFIX_ALL Crea tutte le variabili $prefisso_chiave, indipendentemente dalle collisioni
Esercitazione: Biblioteca
$libri
titolo autore anno copie
asterix aldo 1962 5
obelix osvaldo 1964 3
fiordaliso anna 1999 2
medioevo mino 1956 1
romani rino 2001 10
greci giovanni 1972 4
misteri giacomo 1986 3
gioia di vivere michele 1952 7
vivere la gioia michele 1954 9
$lettori
nome nascita citta
andrea 1982 bergamo
annalisa 1975 mantova
beniamino 1999 chieti
ciro 1950 salerno
donato 1988 lucca
emma 1955 sassari
floriano 1970 grosseto
giacomo 1968 palermo
ilaria 1982 firenze
paolo 1967 firenze
rosa 1992 firenze
valerio 1981 genova
zeno 1952 trieste
libro lettore asterix annalisa asterix donato asterix floriano fiordaliso rosa
$prestiti
Esercitazione: biblioteca.php
<?php
$libri = array(array('titolo'=>'asterix', 'autore'=>'aldo', 'anno'=>1962, 'copie'=>5), array('titolo'=>'obelix', 'autore'=>'osvaldo', 'anno'=>1964, 'copie'=>3), array('titolo'=>'fiordaliso', 'autore'=>'anna', 'anno'=>1999, 'copie'=>2), array('titolo'=>'medioevo', 'autore'=>'mino', 'anno'=>1956, 'copie'=>1), array('titolo'=>'romani', 'autore'=>'rino', 'anno'=>2001, 'copie'=>10), array('titolo'=>'greci', 'autore'=>'giovanni', 'anno'=>1972, 'copie'=>4), array('titolo'=>'misteri', 'autore'=>'giacomo', 'anno'=>1986, 'copie'=>3),
array('titolo'=>'gioia di vivere', 'autore'=>'michele', 'anno'=>1952, 'copie'=>7), array('titolo'=>'vivere la gioia', 'autore'=>'michele', 'anno'=>1954, 'copie'=>9));
$prestiti = array(array('libro'=>'asterix', 'lettore'=>'annalisa'), array('libro'=>'asterix', 'lettore'=>'donato'), array('libro'=>'asterix', 'lettore'=>'floriano'), array('libro'=>'fiordaliso', 'lettore'=>'rosa'), array('libro'=>'gioia di vivere', 'lettore'=>'zeno'), array('libro'=>'medioevo', 'lettore'=>'giacomo'), array('libro'=>'misteri', 'lettore'=>'giacomo'), array('libro'=>'obelix', 'lettore'=>'donato'), array('libro'=>'romani', 'lettore'=>'emma'), array('libro'=>'romani', 'lettore'=>'valerio'));
$lettori = array(array('nome'=>'andrea', 'nascita'=>1982, 'citta'=>'bergamo'), array('nome'=>'annalisa', 'nascita'=>1975, 'citta'=>'mantova'), array('nome'=>'beniamino', 'nascita'=>1999, 'citta'=>'chieti'), array('nome'=>'ciro', 'nascita'=>1950, 'citta'=>'salerno'), array('nome'=>'donato', 'nascita'=>1988, 'citta'=>'lucca'), array('nome'=>'emma', 'nascita'=>1955, 'citta'=>'sassari'), array('nome'=>'floriano', 'nascita'=>1970, 'citta'=>'grosseto'), array('nome'=>'giacomo', 'nascita'=>1968, 'citta'=>'palermo'),
Esercizio 1: processa_query_1.php
Esercizio 1: processa_query_1.php
...
<body>
<?php
require('biblioteca.php');
echo '<table border="1" cellspacing="0" cellpadding="2">';
echo '<tr><th style="background-color:lavender">titolo</th></tr>';
foreach($libri as $libro)
echo '<tr><td align="center">' . $libro['titolo'] . '</td></tr>';
echo '</table>';
?>
</body>
</html>
Esercizio 2: processa_query_2.php
Esercizio 3: processa_query_3.php
Esercizio 4: processa_query_4.php
Esercizio 5: processa_query_5.php
query_5.php processa_query_5.php
Esercizio 6: processa_query_6.php
query_6.php processa_query_6.php
Esercizio 7: processa_query_7.php
query_7.php
processa_query_7.php
Esercizio 8: processa_query_8.php
query_8.php processa_query_8.php