• Non ci sono risultati.

• Individuazione degli elementi mediante indicizzazione numericaassociativa • Elemento: scalare (semplice) o un altro array $strumenti Array = variabile che contiene un insieme (ordinato) di elementi PHP: Array

N/A
N/A
Protected

Academic year: 2021

Condividi "• Individuazione degli elementi mediante indicizzazione numericaassociativa • Elemento: scalare (semplice) o un altro array $strumenti Array = variabile che contiene un insieme (ordinato) di elementi PHP: Array"

Copied!
35
0
0

Testo completo

(1)

PHP: Array

Array = variabile che contiene un insieme (ordinato) di elementi

flauto

violino

oboe

liuto

$strumenti

(2)

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');

(3)

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

(4)

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 ";

(5)

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);

(6)

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

(7)

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 ";

(8)

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

(9)

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));

(10)

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

(11)

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));

(12)

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

(13)

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

(14)

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

(15)

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

(16)

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>";

}

(17)

Riordinamento Casuale di Array: shuffle.php (ii)

(18)

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

(19)

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

(20)

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

(21)

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

(22)

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'),

(23)

Esercizio 1: processa_query_1.php

(24)

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>

(25)

Esercizio 2: processa_query_2.php

(26)

Esercizio 3: processa_query_3.php

(27)

Esercizio 4: processa_query_4.php

(28)

Esercizio 5: processa_query_5.php

query_5.php processa_query_5.php

(29)

Esercizio 6: processa_query_6.php

query_6.php processa_query_6.php

(30)

Esercizio 7: processa_query_7.php

query_7.php

processa_query_7.php

(31)

Esercizio 8: processa_query_8.php

query_8.php processa_query_8.php

(32)

Esercizio 9: processa_query_9.php

(33)

Esercizio 10: processa_query_10.php

(34)

Esercizio 11: processa_query_11.php

(35)

Esercizio 12: processa_query_12.php

Riferimenti

Documenti correlati

¨  L’espressione a[i] restituisce il valore della variabile con indice i, quindi il tipo di questa espressione è il tipo base dell'array. Accesso agli elementi di

I: il valore di ciascun elemento dello array bidimensionale Pi: il numero degli elementi da inserire non può essere maggiore della cardinalità dell’array. U: l’array

I: il valore di ciascun elemento dello array bidimensionale Pi: il numero degli elementi da inserire non può essere maggiore della cardinalità dell’array. U: l’array

I: il valore di ciascun elemento dello array bidimensionale Pi: il numero degli elementi da inserire non può essere maggiore della cardinalità dell’array. U: l’array

Valutazione di codice con array

Prima di chiamare la free sull'array chiamarla su ogni

– Soluzione: si passa alla funzione un ulteriore parametro di tipo array, che viene “riempito” con il risultato.. E i parametri di

● Se gli estremi degli scaglioni e/o le percentuali cambiano, devo cambiare solo l'array e non il programma che fa la ricerca!.. Algoritmi su