Forum und email

Μεταβλητές

Table of Contents

Βασικά

Οι μεταβλητές στην PHP αναπαρίστανται από το σύμβολο του δολαρίου ακολουθούμενο από το όνομα της μεταβλητής. Το όνομα της μεταβλητής είναι case-sensitive.

Τα ονόματα των μεταβλητών ακολουθούν τους ίδιους κανόνες όπως και οι labels στην PHP. Ένα έγκυρο όνομα μεταβλητής αρχίζει με ένα γράμμα ή underscore, ακολουθούμενο από οποιονδήποτε αριθμό από γράμματα, αριθμούς, ή underscores. Ως κανονική έκφραση θα γραφόταν ως εξής: '[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*'

Note: Για τους σκοπούς μας εδώ, ένα γράμμα είναι από a-z, A-Z, και οι ASCII χαρακτήρες από το 127 ως το 255 (0x7f-0xff).

<?php
$var 
"Bob";
$Var "Joe";
echo 
"$var, $Var";      // outputs "Bob, Joe"

$4site 'not yet';     // invalid; starts with a number
$_4site 'not yet';    // valid; starts with an underscore
$tδyte 'mansikka';    // valid; 'δ' is (Extended) ASCII 228.
?>

Στην PHP 3, οι μεταβλητές ανατίθενται πάντα με τιμή. Δηλαδή, όταν αναθέτετε μια έκφραση σε μια μεταβλητή, ολόκληρη η τιμή της αρχική έκφρασης αντιγράφεται στη μεταβλητή προορισμού. Αυτό σημαίνει, για παράδειγμα, ότι αφού αναθέσετε την τιμή μιας μεταβλητής σε μια άλλη, αλλάζοντας μια από αυτές τις μεταβλητές δε θα επηρεαστεί η άλλη. Για περισσότερες πληροφορίες γι'αυτού του είδους την ανάθεση, δείτε το κεφάλαιο σχετικά με Εκφράσεις.

Η PHP 4 προσφέρει έναν άλλο τρόπο για να αναθέσετε τιμές σε μεταβλητές: ανάθεση με αναφορά. Αυτό σημαίνει ότι η νέα μεταβλητή απλά αναφέρεται (με άλλα λόγια, "γίνεται alias για" ή "δείχνει σε") στην αρχική μεταβλητή. Αλλαγές στη νέα μεταβλητή επηρεάζουν την αρχική, και αντιστρόφως. Αυτό σημαίνει επίσης ότι δε γίνεται αντιγραφή. Συνεπώς, η ανάθεση συμβαίνει πιο γρήγορα. Πάντως, οποιοσδήποτε τρόπος επιτάχυνσης θα γίνει εμφανής μόνο σε tight loops ή όταν γίνεται ανάθεση μεγάλων arrays ή objects.

Για να αναθέσουμε με αναφορά, απλά βάζουμε μπροστά ένα ampersand (&) στην αρχή της μεταβλητής στην οποία γίνεται η ανάθεση (η αρχική μεταβλητή). Για παράδειγμα, το ακόλουθο κομμάτι κώδικα δίνει το αποτέλεσμα 'My name is Bob' δύο φορές:

<?php
$foo 
'Bob';              // Assign the value 'Bob' to $foo
$bar = &$foo;              // Reference $foo via $bar.
$bar "My name is $bar";  // Alter $bar...
echo $bar;
echo 
$foo;                 // $foo is altered too.
?>

Ένα σημαντικό πράγμα που πρέπει να σημειώσουμε είναι ότι μόνο οι μεταβλητές με όνομα μπορούν να ανατεθούν με αναφορά.

<?php
$foo 
25;
$bar = &$foo;      // This is a valid assignment.
$bar = &(24 7);  // Invalid; references an unnamed expression.

function test()
{
   return 
25;
}

$bar = &test();    // Invalid.
?>