Tipi di dato e operatori
Indice
In questo capitolo verranno introdotti gli elementi fondamentali su cui si basano gran parte dei linguaggi di programmazione tra cui anche PHP. Sintatticamente, PHP ricorda linguaggi c-like come C/C++ o Java. Infatti come questi, PHP è case-sensitive per cui occorre prestare molta attenzione alle convenzioni utilizzate per la nomenclatura dei vari elementi. Imparerai ad usare adeguatamente i commenti, capirai quali tipi di dati gestisce PHP, cosa sono le variabili e cosa sono le costanti, apprenderai come utilizzare gli operatori per generare espressioni complesse e a gestire gli array.
Queste parti di codice non hanno nessun valore funzionale per il motore PHP, poiché vengono da esso ignorate, ma hanno grande importanza per il programmatore o per chi comunque leggerà il codice.
L’uso dei commenti infatti aumenta di molto la leggibilità del codice stesso, senza appesantire l’esecuzione degli script: si tratta quindi di strumenti utili per aumentare la produttività e scrivere correttamente il codice.
Esistono varie possibilità per inserire i commenti all’interno del codice.
Si possono usare dei commenti in stile C/C++, anteponendo al testo due barre //
:
// Questo è un commento in stile C++
#
:
# Questo è un commento, però in stile Perl
//
o #
salterà l’intera riga.
Se si vogliono inserire commenti lunghi più di una riga, si può ogni volta inserire uno dei due caratteri speciali // o # all’inizio di ogni riga, oppure utilizzare un’altra notazione anch’essa derivante dal C/C++:
/* Questo è un commento che
può occupare più di una riga */
Sono rappresentabili e gestibili numeri interi compresi tra -2.147.483.658 e +2.147.488.657 su un sistema a 32 bit.
I numeri interi possono essere espressi indifferentemente nella modalità decimale, ottale ed esadecimale.
La notazione di questi numeri può essere quella classica, composta da un numero con la parte decimale dopo la virgola (come 1,4 o 1234,7, ecc.), oppure quella esponenziale nella forma: 0.17E16. In questo caso ogni numero è composto da una coppia di valori: la mantissa e l’esponente. La mantissa è un valore frazionario, mentre l’esponente è un numero intero. Il valore del numero così espresso si ottiene moltiplicando la mantissa per la potenza di 10 con grado pari all’esponente. Per esempio 0.17E16=1.7×10^15
I valori di questo tipo vengono rappresentati racchiudendo i caratteri fra appositi delimitatori che possono essere singoli apici o doppi apici.
La stringa rappresentata verrà trattata diversamente dal motore PHP a seconda del delimitatore scelto.
In particolare, le stringhe racchiuse fra doppi apici vengono rappresentate sostituendo al suo interno i nomi delle eventuali variabili contenute con i rispettivi valori.
Le stringhe racchiuse fra singoli apici non vengono trattate in alcun modo, e quindi vengono stampate a video così come sono.
Esempio di stringhe a confronto in una pagina PHP
<!DOCTYPE html>
<html lang="it">
<title>Ciao Mondo in PHP
<title>
<head>
<meta charset="utf-8">
</head>
<body>
<p>
<?php
$a = 10;
$b = 5;
$c = 'una stringa';
$d = '5 stringhe';
$e = '10';
$f = 'pippo';
print ('$a : ' . $a . '<br />');
print ('$b : ' . $b . '<br />');
print ('$c : ' . $c . '<br />');
print ('$d : ' . $d . '<br />');
print ('$e : ' . $e . '<br />');
print ('$f : ' . $f . '<br />');
print ('1) $a == $b : ' . ($a == $b) . '<br />');
print ('2) $b == $d : ' . ($b == $d) . '<br />');
print ('3) $c > $f : ' . ($c > $f) . '<br />');
print ('4) $a === $e : ' . ($a === $e) . '<br />');
?>
</p>
</body>
</html>
$a : 10
$b : 5
$c : una stringa
$d : 5 stringhe
$e : 10
$f : pippo
1) $a == $b :
2) $b == $d : 1
3) $c > $f : 1
4) $a === $e :
Se ad esempio volessimo stampare la stringa:
Il valore della variabile $variabilestringa è Pippo
print ('il valore della variabile $variabilestringa ' . "è $variabilestringa");
Particolare attenzione va posta quando si usano caratteri speciali all’interno di stringhe, poiché potrebbero creare ambiguità e restituire risultati indesiderati. Quando si usano tali caratteri, è necessario anteporre il carattere backslash per far capire al motore PHP le nostre intenzioni. Ecco una lista di caratteri speciali:
\'
= singolo apice, valido solo in stringhe delimitate da singolo apice
\"
= doppio apice, valido solo in stringhe delimitate da doppio apice
\\
= backslash
\n
= new line
\r
= ritorno a capo
\t
= tab orizzontale
\x00 - \xFF
= caratteri esadecimali
Sono molto importanti in quanto possono essere utilizzati come condizioni nelle istruzioni condizionali.
Normalmente si usa per annullare il valore di una variabile o per eliminare un oggetto che non serve più.
Ci sono poi altre tipologie particolari di tipi di dati:
- gli array (collezione di elementi);
- gli oggetti (elementi appartenenti a determinate classi);
- le risorse (i file, le connessioni a database).
Gli ultimi due tipi di dati non verranno qui trattati perché la loro complessità li pone oltre gli obiettivi.
Il contenuto delle variabili in un dato istante
t
costituisce lo stato dell’applicazione in quell’istante.Eseguire un’istruzione ha come effetto quello di causare la transizione da uno stato ad un altro.
Le costanti, invece, sono semplicemente associazioni tra nomi e valori che permettono ai programmatori di ottimizzare lo sviluppo ma che non incidono in nessun modo sulla performance o sull’esecuzione dell’applicazione.
La costante è un modo per istruire l’interprete che ogni volta che incontra un nome di costante sa di dover usare il valore associato.
Dichiarare una variabile
$oggetto = "auto";
Esistono alcune regole sintattiche da rispettare per poter dichiarare correttamente una variabile, in particolare:
- al nome di ogni variabile va anteposto il carattere ”dollaro”
$
; - il nome della variabile può essere composto esclusivamente da lettere, numeri o caratteri di sottolineatura;
- il primo carattere di ogni nome di variabile deve essere una lettera o un carattere di sottolineatura ”underscore”.
Quindi, le variabili $f
, $oggetto
, $_pippo
sono tutte valide, mentre $345
, $\testo
sono dichiarate in modo errato.
È importante notare che PHP è un linguaggio case-sensitive Tipo di linguaggio che discrimina i caratteri maiuscoli dai minuscoli. Esempio pratico: in un linguaggio case sensitive la stringa ”alberto” risulterà diversa dalla stringa ”Alberto”, quindi la variabile $oggetto
è diversa dalla variabile $Oggetto
.
Una volta dichiarata una variabile viene di solito inizializzata con un valore, ad esempio nel caso $oggetto = "auto"
alla variabile di nome “oggetto” viene assegnato il valore iniziale “auto”.
Si è detto che una variabile fa riferimento a una particolare zona di memoria del sistema; dal momento che la memoria a disposizione non è mai infinita, è buona norma essere parsimoniosi nell’uso delle variabili per evitare di appesantire troppo il sistema.
Per dichiarare una costante si utilizza la seguente sintassi:
define ("MINUTES_IN_HOUR" , "60");
print (MINUTES_IN_HOUR);
È buona norma scrivere le costanti utilizzando le lettere maiuscole per facilitarne l’individuazione all’interno del codice.
Il PHP ci mette a disposizione diverse categorie di operatori:
[/expandsub1] Operatori aritmetici
Tabella degli operatori aritmetici
|
||||||||||||||||||||||||
|
Il significato degli operatori aritmetici è molto intuitivo eccezion fatta per i due operatori unari di incremento/decremento che servono ad incrementare o decrementare l’operando di uno. Possono essere usati in due differenti modi, ponendoli in testa all’operando oppure in coda ad esso; ognuna delle due soluzioni comporta un’operazione diversa sull’oggetto in questione.
Per esempio:
$pippo = 10;
print ("$pippo " . ($pippo++) . "$pippo");
Lo script stampa prima la variabile $pippo
, poi, quando incontra di nuovo la variabile che contiene un operatore di post-incremento, prima utilizza la variabile, quindi ristampa il suo valore e poi lo incrementa di uno.
$pippo = 10;
print ($pippo " . (++$pippo) . " $pippo");
// verrà stampata la sequenza: "10 11 11".
In questo caso viene prima stampato il valore della variabile $pippo
, poi lo script incontra la variabile con un operatore di pre-incremento: quindi, prima viene incrementata e poi stampata. Analogamente succede per gli operatori di pre-decremento e post-decremento.
Per esempio:
$nome = 'Paolo';
$a = $b;
$costo = 54;
Esistono in PHP particolari operatori di assegnamento che permettono di compattare il codice e renderlo più elegante.
Operatori di assegnamento per compattare codici
|
||||||||||||||||||||
|
- == : uguale
- != : diverso
- === : identico (cioè uguale e dello stesso tipo: ad esempio per due variabili di tipo intero)
- > : maggiore
- >= : maggiore o uguale
- < : minore
- <= : minore o uguale
Gli operatori logici supportati da PHP sono:
- && = valuta se entrambi gli operatori sono veri
- || = valuta se almeno uno degli operatori è vero
- ! = si usa con un solo operatore, è verificato se l’operatore è falso
- AND = come && ma con minore precedenza
- OR = come || ma con minore precedenza
- XOR = OR esclusivo, funziona per esclusione degli operandi; se uno solo è vero l’altro viene assunto falso senza eseguire nessun controllo su di esso.
Come si può notare dalla lista degli operatori logici, gli operatori AND, OR e NOT possono essere rappresentati con due notazioni diverse, che differiscono per il grado di precedenza nel caso di espressioni complesse.
Ecco una lista degli operatori organizzata in base alla loro priorità, iniziando da quelli con priorità maggiore:
- operatori di incremento e decremento (
++ --
) - moltiplicazione, divisione e modulo (
* / %
) - addizione e sottrazione (
+ -
) - operatori di confronto maggiore e minore (
> >= < <=
) - operatori di confronto di eguaglianza e disuguaglianza (
= = = = = !=
) - operatore logico AND nella notazione
&&
- operatore logico OR nella notazione
||
- operatori di assegnazione comprese le forme contratte
- operatore logico AND nella notazione
AND
- operatore logico
XOR
- operatore logico OR nella notazione
OR
Come per l’algebra, poi, è sempre possibile utilizzare le parentesi per creare precedenze a nostro piacimento.
Ogni array può contenere numeri, stringhe oppure altri array, in tal caso si parlerà di array multidimensionale.
Dichiarazione degli array
Per la dichiarazione degli array si può utilizzare una delle seguenti sintassi:
//dichiarazione di un array vuoto
$variabilearray[];
//dichiarazione di un array contenente un elemento stringa, l'elemento è identificato dalla chiave "0"
$varibilearray[0] = "hello";
//dichiarazione di un array contenente un elemento stringa, l'elemento è identificato dalla chiave "saluto"
$variabilearray["saluto"] = "hello";
$note = ("do", "re", "mi", "fa", "sol", "la", "si");
Se vogliamo, invece, che gli elementi dell’array prendano una chiave a partire da un valore numerico da noi scelto possiamo usare questa istruzione:
$note = ( 1 => "do", "re", "mi", "fa", "sol", "la", "si");
In genere le chiavi sono di tipo numerico, ma è possibile anche creare array con chiavi alfanumeriche.
L'array:
$note = ("do", "re", "mi", "fa", "sol", "la", "si");
do : chiave = 0;
re : chiave = 1;
mi : chiave = 2;
$ruolo["attaccante"] = "Del Piero" ;
$ruolo["difensore"] = "Maldini";
$ruolo["portiere"] = "Peruzzi";
Le chiavi di tipo personalizzato o associativo vanno usate insieme agli apici o doppi apici come in questo caso, poiché in caso contrario lo script genererebbe un messaggio di tipo “notice”, continuando comunque a funzionare normalmente.
Bisogna porre particolare attenzione all’uso di array con chiavi personalizzate, poiché questo tipo di chiavi precludono la possibilità di navigare all’interno di un array attraverso gli strumenti automatici basati sugli indici numerici.
In un array dichiarato è ovviamente possibile aggiungere degli elementi o leggerne il contenuto.
La sintassi per l'aggiunta di elementi all'interno di un array è:
$nome_array[] = valore_da_aggiungere;
$nome_array
avrà come chiave il valore numerico successivo alla chiave numerica dell’ultimo elemento.
Dato il seguente array:
$nota = array ("do", "re", "mi", "sol", "la", "si" );
do: chiave = 0;
re: chiave = 1;
mi: chiave = 2;
sol: chiave = 3;
la: chiave = 4;
si: chiave = 5;
$nota[] = fa;
fa
all’interno dell’array $nota
; l’elemento aggiunto prenderà la chiave numerica “6”.
Nel caso in cui si voglia assegnare al nuovo elemento aggiunto all’array una chiave di valore personalizzato si dovrà utilizzare la seguente sintassi:
$nome_array[nome_chiave] = valore;
unset ($nome_array[valore_chiave]);
$nome_array
l’elemento identificato dalla chiave riportata fra parentesi quadre.
È importante sottolineare che, cancellando un elemento di un array, viene persa anche la chiave associata a quell’elemento, causando un buco nella lista delle chiavi rimanenti.
Se si vuole cancellare completamente un array con tutti i suoi valori, la sintassi è la seguente:
unset ($nome_array);
La sintassi da seguire è la seguente:
$variabile = nome_array[valore_chiave] ;
$variabile = count($nome_array);
$variabile
.La sintassi riportata in riga due, invece, ci consente di contare tutti gli elementi dell’array “nome_array” e di salvare questo valore nella variabile
$variabile
.Un classico esempio di array multidimensionale si ha nel caso in cui si registrano i dati anagrafici di più persone, per ognuna delle quali registriamo nome, cognome, data di nascita e residenza.
$impiegato = array (
array ('nome' => 'Mario',
'cognome' => 'Rossi',
'data_nascita' => '1943/02/11',
'residenza' => 'Milano'),
array ('nome' => 'Luca',
'cognome' => 'Neri',
'data_nascita' => '1955/11/11',
'residenza' => 'Roma')
);
$impiegato
, formato a sua volta da due elementi di tipo array.
Ogni elemento è separato da una virgola e ognuno di essi ha un indice numerico a partire da 0.
Gli array che formano gli elementi di $impiegato
hanno tutti chiavi personalizzate.
Ancora nessun commento