Corso base di Php - Lezione 2

Tipi di dati, scope delle variabili, operatori e stringhe.



[ZEUS News - www.zeusnews.it - 12-08-2008]

Tipi di dati

Iniziamo la seconda lezione parlando dei tipi di dati che Php è in grado di gestire. Php supporta 8 tipi di dati tra scalari e composti (o strutturati). I tipi scalari sono dati che possono essere ordinati in una sola dimensione come gli interi, i booleani, i numeri a virgola mobile e via dicendo. I tipi composti sono per esempio gli array e gli oggetti.

Di seguito la lista dei tipi:
1. boolean --> scalare: assume solo i valori true o false
2. intero --> scalare: numeri interi con segno
3. virgola mobile --> scalare: numeri in virgola mobile con segno
4. stringa --> scalare: una sequenza di caratteri
5. array --> composto: è una mappa che a ogni valore associa una chiave (o indice)
6. oggetto --> composto: può contenere proprietà e metodi
7. risorsa --> speciale: contiene un riferimento a una risorsa esterna come un gestore di un file aperto
8. null --> speciale: può contenere solo il valore null indicante che la variabile non contiene di fatto un valore.

Di norma, quando si lavora con Php, non serve convertire un tipo in un altro, ma a volte può tornare utile; potrebbe capitarci di dover prepare un output per un altro programma, oppure potremmo dover essere sicuri che il dato appartenga a un certo tipo. Esistono funzioni per impostare il tipo a una variabile oppure per capire a che tipo questa appartenga. Di seguito l'esempio spiega come scoprire il tipo di una variabile e poi come forzarlo in un altro:

<?php
   $miaVar = 123;   // la varibile è di tipo numerico (intero)
   print 'La variabile è di tipo ' . gettype($miaVar) . '<br/>';
   settype($miaVar,'string');   // Ora la varibile è una stringa
   print 'Ora la variabile è di tipo ' . gettype($miaVar);
?>

Per alcuni sarà prematuro, ma dobbiamo ora introdurre un operatore che agisce sulle stringhe: ".". Il punto serve a concatenare due stringhe e nell'esempio viene utilizzato per unire le stringhe di testo 'La variabile...' e 'Ora la variabile...' con l'output della funzione gettype(mixed $var) che data una variabile come parametro ritorna una stringa contenente il suo tipo. settype(mixed &$var,string $type) serve a settare il tipo $type alla variabile $var e ritorna true in caso di successo e false altrimenti. Naturalmente per maggiori approfondimenti vi invitiamo a consultare la documentazione sul sito ufficiale.

La libreria standard prevede un insieme di funzioni per stabilire se una variabile appartiene a un tipo specifico: is_string(...), is_int(...), e via dicendo.

Scope della variabile

Dopo aver definito una variabile, possiamo usarla nel nostro programma ma non ovunque: dipende da dove la definiamo. Di norma una variabile può essere utilizzata dal punto in cui viene definita in avanti, cioè dal punto in cui - di fatto - viene utilizzata per la prima volta. Però ci sono delle eccezioni, come nel caso delle funzioni. Le variabili definite all'interno di una funzione sono locali e possono essere usate solo in quell'ambito. Analizziamo il codice che segue:

<?php
   $miaVar=12;
   function func()
   {
      $miaVar='ciao a tutti!';
      print $miaVar . '<br/>';
   }
   func();
   print $miaVar;
?>

La variabile $miaVar fuori dalla funzione ha valore 12, mentre al suo interno abbiamo creato un'altra variabile $miaVar che contiene una stringa. Dentro func() vediamo la variabile "interna", mentra da fuori vediamo quella esterna; si dice che la variabile interna ha nascosto quella esterna. Quando la chiamata a func() termina, $miaVar (interna) viene distrutta: si parla quindi di variabile locale.

Occorre evidenziare una cosa importantissima (che verrà ripresa parlando delle funzioni): se all'interno di func() non avessimo definito $miaVar, la $miaVar esterna non sarebbe stata comunque raggiungibile senza un piccolo "trucco"; questa cosa in effetti non è molto piacevole, soprattutto per chi proviene dal linguaggio C o dal C++. In questi linguaggi, l'ambito di una variabile globale è appunto globale: se da una funzione vogliamo accedervi, dobbiamo poterlo fare. In Php per poter accedere alla $miaVar esterna avremmo dovuto procedere come segue:

<?php
   $miaVar=12;
   function func()
   {
      global $miaVar;
      print $miaVar . '<br/>';
   }
   func();
   print $miaVar;
?>

A questo punto, da dentro func() ci riferiamo alla variabile esterna; per cui la chiamata alla funzione e la print successiva produrranno lo stesso risultato: 12.

Possiamo anche definire costanti utilizzando la funzione define(...). Una costante di fatto è una variabile che, una volta inizializzata, non può essere cambiata; il suo scope è sempre globale. Il nome di una costante non inizia con $ e per il resto segue le stesse regole dei nomi delle variabili.

<?php
   define(COSTANTE,"12");
   print COSTANTE;
?>

Nel nostro esempio abbiamo definito una costante di nome COSTANTE che vale "12"; definendo il valore senza le virgolette, avremmo ottenuto una costante intera.

Operatori

Tramite gli operatori possiamo manipolare le variabili. Abbiamo a disposizione operatori aritmetici, di stringa, logici e altri che vedremo via via.

Il primo operatore che abbiamo incontrato finora è =. L'uguale serve ad assegnare a una variabile un valore, che può essere una costante o un'elaborazione complessa tra più variabili.

Distinguiamo in Php tre tipi di operatori:
1. unari
2. binari
3. ternari

Gli operatori unari agiscono su un solo operando: sono ++ e -- e possono precedere o succedere una variabile:

<?php
   ++$i;
   $x--;
   $k++;
?>

Vedremo più avanti come cambia il comportamento di questi operatori a seconda del contesto e se vengono posti prima o dopo la variabile su cui operano.

Gli operatori binari lavorano su due variabili: gli esempi più classici sono le quattro operazioni fondamentali (i matematici riconoscono solo due operazioni fondamentali, ma questa è un'altra storia).

<?php
   $x=4+1;
   $y=$x-3;
   $z=$x/$y;
   $k=$z*18;
?>

Ovviamante esistono anche altri operatori. L'unico operatore ternario che abbiamo è l'if aritmetico, che tratteremo più avanti; dal nome però capiamo che lavoreremo con tre operandi.

Definiamo qui in modo semplicistico il concetto di espressione: un'espressione è del codice che calcola un valore. Nella definizione rientra anche la semplice assegnazione, come:

<?php
   $x=6;
?>

Stringhe: operatori e funzioni

Trattiamo qui l'unico operatore che lavora sulle stringhe, il ".", e alcune funzioni che servono a manipolarle.

<?php
   $nome='Mario';
   $cognome='Rossi';
   $nomeIntero=$nome . ' ' . $cognome;
   print $nomeIntero;
?>

Abbiamo qui due variabili $nome e $cognome; la terza variabile, $nomeIntero, contiene la concatenazione delle due separate da uno spazio.

Abbiamo utilizzato sempre il carattere apice (') per racchiudere una stringa, ma Php prevede anche l'uso delle virgolette doppie (").

Il testo racchiuso tra due apici verrà mandato al browser così com'è, senza essere interpretato, a meno che non si tratti di alcuni codici di escape.

Se scrivessimo:

<?php
   $x=6;
   print 'La var vale $x';
?>

otterremo la scritta "La var vale $x". Utilizzando invece print "la var vale $x" otterremmo la scritta "La var vale 6". Si dice che l'apice produce un escaping parziale, mentre la virgoletta produce un escaping totale.

Nel caso che all'interno di una stringa tra apici debba comparire però l'apice, siamo costretti a proteggerlo tramite la seguente:

<?php
   $x='Stringa con dentro un \'';
?>

Lo stesso vale se dentro a una stringa tra virgolette volessimo scrivere una virgoletta:

<?php
   $x="Stringa con dentro una \"";
?>

All'interno delle virgolette, possiamo utilizzare caratteri di escape come "\n", "\t" e altri: questi producono rispettivamente un ritorno a capo e un tab in avanti di 4 spazi.

Attenti però; dovete ricordare che state producendo codice Html (o altro) e che nel browser non visualizzerete il tab o il ritorno a capo, ma questo avrà effetto sul sorgente Html generato. Se volete visualizzare un ritorno a capo nel browser dovrete usare <br/>.

Sconsigliamo l'uso dell'escaping totale sulle variabili, in quanto produce codice meno leggibile:

<?php
   $x='xxx';
   $y='yyy';
   print "la var x vale $x mentre y vale $y";
?>

è meno leggibile di

<?php
   $x='xxx';
   $y='yyy';
   print "la var x vale " . $x . " mentre y vale " . $y;
?>

Php mette a disposizione una serie di funzioni per manipolare le stringhe. Le più comuni sono strlen, strpos, substring e str_replace, che rispettivamente ritornano la lunghezza di una stringa, la posizione di una sottostringa, una sottostringa e una stringa con le ricorrenze di una sottostringa sostituite con un'altra. Alcuni esempi:

<?php
   $stringa='Io sono una stringa!';
   $len=strlen($stringa); // lunghezza
   $pos=strpos($stringa,'sono'); // prima occorrenza di sono
   // a partire da sinistra
   $substr=substr($stringa,10,4); // ritorna 4 caratteri
   // partendo dall'indice 10 (undicesimo carattere)
   $rep=str_replace('sono','mucche',$stringa);
   // sostituisce sono con mucche
   print $stringa . '<br/>';
   print $len . '<br/>';
   print $pos . '<br/>';
   print $substr . '<br/>';
   print $rep . '<br/>';
?>

Il primo carattere di una stringa ha indice 0 mentre l'ultimo ha indice strlen($stringa)-1. Esistono molte altre funzioni per gestire le stringhe: vi invitiamo ad approfondire la loro conoscenza sul sito di riferimento.

Se questo articolo ti è piaciuto e vuoi rimanere sempre informato con Zeus News ti consigliamo di iscriverti alla Newsletter gratuita. Inoltre puoi consigliare l'articolo utilizzando uno dei pulsanti qui sotto, inserire un commento (anche anonimo) o segnalare un refuso.
© RIPRODUZIONE RISERVATA

Commenti all'articolo (0)


La liberta' di parola e' un diritto inviolabile, ma nei forum di Zeus News vige un regolamento che impone delle restrizioni e che l'utente e' tenuto a rispettare. I moderatori si riservano il diritto di cancellare o modificare i commenti inseriti dagli utenti, senza dover fornire giustificazione alcuna. Gli utenti non registrati al forum inoltre sono sottoposti a moderazione preventiva. La responsabilita' dei commenti ricade esclusivamente sui rispettivi autori. I principali consigli: rimani sempre in argomento; evita commenti offensivi, volgari, violenti o che inneggiano all'illegalita'; non inserire dati personali, link inutili o spam in generale.
E' VIETATA la riproduzione dei testi e delle immagini senza l'espressa autorizzazione scritta di Zeus News. Tutti i marchi e i marchi registrati citati sono di proprietà delle rispettive società. Informativa sulla privacy. I tuoi suggerimenti sono di vitale importanza per Zeus News. Contatta la redazione e contribuisci anche tu a migliorare il sito: pubblicheremo sui forum le lettere piu' interessanti.
Sondaggio
Vuoi scaricare la canzone 'Yesterday' dei Beatles; esistono varie opzioni su Internet. Quale file scarichi tra i seguenti?
Yesterday-Beatles-Song.scr
Beatles_All_songs.zip
Beatles_Yesterday.mp3.exe
Betles-Yesturday.wma

Mostra i risultati (1592 voti)
Aprile 2024
L'algoritmo di ricarica che raddoppia la vita utile delle batterie
Hype e Banca Sella, disservizi a profusione
Falla nei NAS D-Link, ma la patch non arriverà mai
La navigazione in incognito non è in incognito
Le tre stimmate della posta elettronica
Amazon abbandona i negozi coi cassieri a distanza
Marzo 2024
Buone azioni e serrature ridicole
Il piano Merlyn, ovvero la liquidazione di Tim
Falla nelle serrature elettroniche, milioni di stanze d'hotel a rischio
L'antenato di ChatGPT in un foglio Excel
La valle inquietante
La crisi di Tim e la divisione sindacale
La fine del mondo, virtuale
WhatsApp e Messenger aprono agli altri servizi di chat
Permainformatica
Tutti gli Arretrati
Accadde oggi - 20 aprile


web metrics