Επιμέλεια Ι.Κονταξάκης

2   Οι Τύποι Δεδομένων της PHP-μεταβλητές

Η PHP υποστηρίζει τους εξής τύπους δεδομένων :

       Scalar τύποι

Σύνθετοι τύποι

 

Ο τύπος δεδομένων μιας μεταβλητής δεν ορίζεται συνήθως από τον προγραμματιστή αλλά αποφασίζεται την ώρα εκτέλεσης (runtime) από την PHP ανάλογα με το περιβάλλον (context) στο οποίο χρησιμοποιείται η μεταβλητή. Αν θέλουμε να κάνουμε μια μεταβλητή να μετατραπεί σ’ έναν συγκεκριμένο τύπο, μπορούμε είτε να μετατρέψουμε (cast) τη μεταβλητή ή να χρησιμοποιήσουμε τη συνάρτηση settype() σ’ αυτή.

Πρέπει να έχουμε υπόψη μας ότι μια μεταβλητή μπορεί να συμπεριφερθεί διαφορετικά σε συγκεκριμένες καταστάσεις, ανάλογα με το τι τύπο δεδομένων έχει εκείνη την στιγμή.

 

  1. Ο Τύπος Integer (Ακέραιος)

Οι ακέραιοι (integers) μπορούν να καθορισθούν χρησιμοποιώντας μια από τις εξής συντάξεις :

$met1 = 1234;    // Ακέραιος αριθμός

$met2 = -123;     // αρνητικός αριθμός

$met3 = 0123;    // οκταδικός αριθμός (ισοδύναμος με τον δεκαδικό 83)

$met4 = 0x12;     // δεκαεξαδικός αριθμός (ισοδύναμος με τον δεκαδ. 18)

Οι πράξεις που μπορούν να γίνουν στον τύπο integer είναι:

ΤΕΛΕΣΤΗΣΣΗΣ

ΠΡΑΞΗ

+

Πρόσθεση

-

Αφαίρεση

*

Πολλαπλασιασμός

 

Ακέραιο Πηλίκο

%

Υπόλοιπο ακεραίας διαίρεσης

 

 

  1. Ο τύπος floating point numbers(  Κινητής Υποδιαστολής –Double)

Οι αριθμοί κινητής υποδιαστολής (floating point numbers ή doubles), μπορούν να καθορισθούν χρησιμοποιώντας μια από τις εξής συντάξεις :

$met1 = 1.234;   // η τιμή της $met1 είναι πραγματικός

$met2 = 1.2e3;  //  η τιμή της $met2 είναι πραγματικός  1.2X103   

Οι πράξεις που μπορούν να γίνουν στον τύπο integer είναι:

 

ΤΕΛΕΣΤΗΣΣΗΣ

ΠΡΑΞΗ

+

Πρόσθεση

-

Αφαίρεση

*

Πολλαπλασιασμός

/

 Πηλίκο

 

 

 

  1. O  Τύπος String  (Αλφαριθμητικά)

Τα αλφαριθμητικά (strings) μπορούν να καθορισθούν χρησιμοποιώντας ένα από δύο σύνολα οριοθετών (delimiters). Αν το string περικλείεται από διπλά εισαγωγικά (double-quotes, "), οι μεταβλητές μέσα στο string θα επεκταθούν.

Υπάρχουν δύο τελεστές για τα αλφαριθμητικά (strings). Ο πρώτος είναι ο τελεστής συνένωσης (concatenation operator), '.', ο οποίος επιστρέφει την ένωση του δεξιού και του αριστερού του ορίσματος. Ο δεύτερος είναι ο τελεστής εκχώρησης συνένωσης (concatenating assignment operator), '.='.

Έτσι οι πράξεις που μπορούν να γίνουν στον τύπο String είναι:

 

 

ΤΕΛΕΣΤΗΣΣΗΣ

ΠΡΑΞΗ

.

Συνένωση

.=

Εκχώρηση συνένωσης

 

Παραδείγματα:

$a = "Hello ";

$b = $a . "World!";  // το $b περιέχει το "Hello World!"

 

$a = "Hello ";

$a .= "World!";         // το $a περιέχει το "Hello World!"

 

Ειδικοί χαρακτήρες

Όπως ισχύει στην C και την Perl, ο χαρακτήρας backslash (\) μπορεί να χρησιμοποιηθεί για να καθορίσουμε τους ειδικούς χαρακτήρες :

 

Ειδικός Χαρακτήρας

Νόημα

\n

Νέα γραμμή (newline)

\r

carriage

\t

Οριζόντιο tab (στηλοθέτης)

\\

Χαρακτήρας backslash

\$

Σύμβολο του δολαρίου

\"

Διπλά εισαγωγικά

 

Ο δεύτερος τρόπος για να οριοθετήσουμε (delimit) ένα string χρησιμοποιεί τον χαρακτήρα μονού εισαγωγικού (single-quote, '). Όταν ένα string περικλείεται από μονά εισαγωγικά, οι μόνοι ειδικοί χαρακτήρες (escapes) που γίνονται αντιληπτοί είναι οι \\ και \'. Οι μεταβλητές δεν επεκτείνονται (αναλύονται) μέσα σ’ ένα string που περικλείεται από μονά εισαγωγικά.

 

Τα strings μπορούν να ενωθούν (concatenated) με τον τελεστή '.' (dot), ενώ ο τελεστής της πρόσθεσης '+' δεν μπορεί να κάνει συνένωση.

Μπορούμε να έχουμε πρόσβαση στους χαρακτήρες των strings αντιμετωπίζοντας το string σαν έναν πίνακα χαρακτήρων, χρησιμοποιώντας μια σύνταξη που θυμίζει C. Ακολουθούν παραδείγματα.

<?php

/* Εκχώρηση ενός string */

$str = "This is a string";

/* Προσθήκη σ’ ένα string */

$str = $str . " with some more text";

/* Ένας άλλος τρόπος προσθήκης */

$str .= " and a newline at the end.\n";

/* Αυτό το string θα τελειώνει ως '<p> Number :  9 </p>' */

$num = 9;

$str = "<p> Number : $num </p>";

/* Και αυτό ως '<p> Number : $num </p>' */

$num = 9;

$str = '<p> Number : $num </p>';

/* Διαβάζουμε τον πρώτο χαρακτήρα ενός string */

$str = 'This is a test.';

$first = $str[0];

/* Διαβάζουμε τον τελευταίο χαρακτήρα ενός string */

$str = 'This is still a test.';

$last = $str[strlen($str)-1];

?>

 

Μετατροπή Strings

Όταν ένα string αποτιμάται σαν μια αριθμητική τιμή, η προκύπτουσα τιμή και ο τύπος δεδομένων καθορίζονται ως εξής : Το string θα αποτιμηθεί σε τύπο δεδομένων double αν περιέχει έναν από τους χαρακτήρες '.', 'e' ή 'E', αλλιώς θα αποτιμηθεί σαν ακέραιος (integer).

Η τιμή δίνεται από το αρχικό τμήμα του string. Αν το string ξεκινά με έγκυρα αριθμητικά δεδομένα, αυτή θα είναι και η τιμή που θα χρησιμοποιηθεί. Διαφορετικά, η τιμή του θα είναι 0.

Έγκυρα αριθμητικά δεδομένα σημαίνει ένα προαιρετικό πρόσημο, ακολουθούμενο από ένα ή περισσότερα ψηφία, και ίσως μια υποδιαστολή, ακολουθούμενα από έναν προαιρετικό εκθέτη. Ο εκθέτης είναι ένα 'e' ή 'E' ακολουθούμενος από ένα ή περισσότερα ψηφία.

Όταν η πρώτη έκφραση είναι ένα string, ο τύπος δεδομένων της μεταβλητής θα εξαρτηθεί από τη δεύτερη έκφραση.

$foo = 1 + "10.5";                            // $foo is double (11.5)

$foo = 1 + "-1.3e3";                        // $foo is double (-1299)

$foo = 1 + "bob-1.3e3";                 // $foo is integer (1)

$foo = 1 + "bob3";                          // $foo is integer (1)

$foo = 1 + "10 Small Pigs";           // $foo is integer (11)

$foo = 1 + "10 Little Piggies";      // $foo is integer (11)

$foo = "10.0 pigs " + 1;                  // $foo is integer (11)

$foo = "10.0 pigs " + 1.0;               // $foo is double (11)    

Αν θέλουμε να δοκιμάσουμε κάποια από τις παραπάνω εκφράσεις, μπορούμε να την αντιγράψουμε και να εισάγουμε την παρακάτω γραμμή για να δούμε τι γίνεται :

echo "\$foo==$foo; type is " . gettype($foo) . "<br>\n";