PHP Basics 05: Μεταβλητές (Variables)

Σε αυτή την περιοχή μπορείτε να βρείτε ή να αναζητήσετε πληροφορίες σχετικές με την PHP

Συντονιστές: WebDev Moderators, Super-Moderators, PHP Moderators

Απάντηση
Άβαταρ μέλους
cordis
Administrator, [F|H]ounder, [C|S]EO
Δημοσιεύσεις: 27616
Εγγραφή: 09 Οκτ 1999 03:00
Τοποθεσία: Greece
Επικοινωνία:

PHP Basics 05: Μεταβλητές (Variables)

Δημοσίευση από cordis » 14 Νοέμ 2005 18:09

Οι μεταβλητές (variables) γενικά
H μεταβλητή είναι μια αναφορά σε μια θέση μνήμης του υπολογιστή μας, που κατά την διάρκεια εκτέλεσης ενός προγράμματος μπορούν να αποθηκευτούν πληροφορίες. Αυτές οι πληροφορίες μπορεί να αλλάζουν ή να λάβουν μέρος σε πράξεις μαζί με άλλες μεταβλητές ή σταθερές τιμές. Κάθε μεταβλητή έχει ένα συγκριμένο όνομα που την χαρακτηρίζει, μια συγκεκριμένη εμβέλειας και μια συγκεκριμένη διάρκεια ζωής.

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

Τα ιδιαίτερα χαρακτηριστικά των μεταβλητών (variables) στην PHP
Στην PHP τις μεταβλητές δεν χρειάζεται να τις ορίσουμε πριν τις χρησιμοποιήσουμε και μπορούμε κατά την εκτέλεση να αλλάξουμε τον τύπο δεδομένων τους κάτω από συγκεκριμένους όρους.

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

Ένα έγκυρο όνομα μεταβλητής αρχίζει με ένα γράμμα ή κάτω παύλα (underscore) ακολουθούμενο από οποιονδήποτε αριθμό ή γράμμα, ή γράμματα, αριθμούς, και κάτω παύλες.

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

Σωστά ονόματα μεταβλητών στην PHP με αναθέσεις τιμών

Κώδικας: Επιλογή όλων

$var = "my first varriable";
$Var = "my 2nd variable"; //(αυτή είναι διαφορετική από την προηγούμενη γιατί έχει κεφαλαίο V)
$_EnyVar = "an other variable";
$iNum = 12;
$dNum = 15.6;
Λάθος ονόματα μεταβλητών στην PHP

Κώδικας: Επιλογή όλων

$2num = 2; //ξεκινάει με αριθμό 
Jbl = 3; // δεν έχουμε βάλει το αρχικό $
Οι αναθέσεις με αναφορά (reference) γίνονται με το σύμβολο &.
Με λίγα λόγια με αυτόν τον τρόπο καταφέρνουμε να συνδέσουμε δύο μεταβλητές και να έχουμε πρόσβαση στην ίδια πληροφορία με διαφορετικά ονόματα μεταβλητών.
Πχ.

Κώδικας: Επιλογή όλων

<?php
$foo = 'Bob';              // βάζουμε την τιμή 'Bob' στο $foo
$bar = &$foo;              // Συνδέουμε το $foo μέσω του $bar.
$bar = "My name is $bar";  // αλλάζουμε το $bar...
echo $bar;
echo $foo;                // βλέπουμε ότι και το $foo άλλαξε... 
?> 
Σχετικά τις αναφορές (references):
http://www.php.net/manual/el/language.references.php
http://www.obdev.at/developers/articles/00002.html
Δεν απαντάω σε προσωπικά μηνύματα με ερωτήσεις που καλύπτονται από τις ενότητες του forum. Για ο,τι άλλο είμαι εδώ για εσάς.
- follow me @twitter

Άβαταρ μέλους
cdhyper
Literature Moderator
Δημοσιεύσεις: 9707
Εγγραφή: 23 Ιουν 2001 03:00
Τοποθεσία: Φωτονερόπετρα
Επικοινωνία:

PHP Basics 05: Μεταβλητές (Variables)

Δημοσίευση από cdhyper » 15 Νοέμ 2005 03:54

Τα έχω καταλάβει όλα μέχρι εδώ. Cordis είσαι σωστός παιδαγωγός. Πότε αρχίζω να προγραμματίζω; :lol:
Σύγκριση τιμών Supermarket: http://www.shopnsave.gr
Νέα Ιταλικα επιπλα κουζινας
Για φιλοσόφους: http://filosofia.gr και http://liantinis.org

Άβαταρ μέλους
xmavidis
Honorary Member
Δημοσιεύσεις: 1217
Εγγραφή: 02 Δεκ 2003 19:59
Τοποθεσία: Ηράκλειο

PHP Basics 05: Μεταβλητές (Variables)

Δημοσίευση από xmavidis » 15 Νοέμ 2005 20:38

Πολύ ωραία διατυπωμένα και πολύ επεξηγηματικά!
Μπράβο cordis! :P
I want to know God’s thoughts; the rest are details.
Albert Einstein

Άβαταρ μέλους
Rapid-eraser
WebDev Moderator
Δημοσιεύσεις: 6851
Εγγραφή: 05 Απρ 2003 17:50
Τοποθεσία: Πειραιάς
Επικοινωνία:

PHP Basics 05: Μεταβλητές (Variables)

Δημοσίευση από Rapid-eraser » 15 Νοέμ 2005 21:18

Εδώ θα ήθελα να πω πως υπάρχει και άλλος ένας τύπος μεταβλητής που λέγεται variable variable (μεταβλητές μεταβλητών).
(υπάρχουν και variable functions όπως θα δούμε παρακάτω)

Κώδικας: Επιλογή όλων

<?
$foo = 'bar';

$bar = 1;

$$foo ++;

echo $bar ;

// θα κάνει echo την τιμή 2 !!! 
?>
Όπως θα δείτε, τα variable variables μπορούν να δημιουργήσουν ένα pointing δυναμικό προς μια μεταβλητή ή και να την δημιουργήσουν δυναμικά.
Π.χ.:

Κώδικας: Επιλογή όλων

<?
$foo1   = 'Rapid1';
$foo2   = 'Rapid2';
$foo3   = 'Rapid3';
$foo4   = 'Rapid4';
$foo5   = 'Rapid5';
$foo6   = 'Rapid6';
$foo7   = 'Rapid7';
$foo8   = 'Rapid8';
$foo9   = 'Rapid9';
$foo10 = 'Rapid10';

?><pre><?
for&#40;$i=1; $i<=10; $i++&#41;&#123;
$bar = 'foo'.$i;
echo $bar."   = '".$$bar."'; \n"; 
&#125;

?></pre>
Όπως θα δείτε από την παραπάνω χρήση, η δυναμική σύνθεση των μεταβλητών καμιά φορά μπορεί να είναι βολική, προσωπικά όμως την αποφεύγω σαν το διάβολο το λιβάνι, αλλά δυσκολεύει την κατανόηση του script.
Πρώτη επιλογή μας θα πρέπει να είναι τα array και όπου μπορούμε να τους κάνουμε χρήση, καθώς είναι πολύ πιο γρήγορο από το να δημιουργούμε νέες μεταβλητές.

Σε αυτό το σημείο θα ήθελα να τονίσω ότι στην php παρότι δεν χρειάζεται με κώδικα να κάνουμε instantinate και να δηλώσουμε τον τύπο της μεταβλητής, καλό θα είναι να προσέχουμε τα inputs τι τύπο έχουν.
Αυτή η χαλαρότητα στη δήλωση των μεταβλητών φαίνεται βολική αλλά οδηγεί σε πολλά προβλήματα στον κώδικά μας.
Γι' αυτό όταν δεν είμαστε σίγουροι για τον τύπο μιας μεταβλητής, καλό θα είναι να κάνουμε type cast και να βεβαιωνόμαστε για τον τύπο του.

Π.χ.:

Κώδικας: Επιλογή όλων

<?
$id = &#40;int&#41;$_GET&#91;'id'&#93;;
?>
Υπάρχουν ακρετοί τρόποι για type cast βέβαια και δεν θα σταθώ στο πως υλοποιούνται όλοι. Απλά θέλει προσοχή στο filtering των δεδομένων που έρχονται προς το script μας.

ΥΓ: Η ιδιότητα αυτή του δυναμικού εντοπισμού του τύπου μιας μεταβλητής λέγεται Zvals... αλλιώς Zend Vals, και δεν είναι μέρος της μηχανής της PHP, όσο περίεργο και αν φαίνεται αυτό. :)
Έχει γίνει επικουρικά με την βοήθεια του Zend Engine!!!

Thanks mrpc για τον κόπο του transcrypt από Greeklish:P:)
Τελευταία επεξεργασία από το μέλος Rapid-eraser την 17 Νοέμ 2005 11:33, έχει επεξεργασθεί 1 φορά συνολικά.
Cu, Rapid-eraser, Tα αγαθά copies κτώνται.
Love is like oxygen, You get too much you get too high
Not enough and you're gonna die, Love gets you high

Άβαταρ μέλους
cdhyper
Literature Moderator
Δημοσιεύσεις: 9707
Εγγραφή: 23 Ιουν 2001 03:00
Τοποθεσία: Φωτονερόπετρα
Επικοινωνία:

PHP Basics 05: Μεταβλητές (Variables)

Δημοσίευση από cdhyper » 15 Νοέμ 2005 23:41

Τώρα δηλαδή νομίζεις ότι έκανες την κατάσταση ευκολότερη και διαφώτισες τους μαθητάς;
Σύγκριση τιμών Supermarket: http://www.shopnsave.gr
Νέα Ιταλικα επιπλα κουζινας
Για φιλοσόφους: http://filosofia.gr και http://liantinis.org

Άβαταρ μέλους
Rapid-eraser
WebDev Moderator
Δημοσιεύσεις: 6851
Εγγραφή: 05 Απρ 2003 17:50
Τοποθεσία: Πειραιάς
Επικοινωνία:

PHP Basics 05: Μεταβλητές (Variables)

Δημοσίευση από Rapid-eraser » 16 Νοέμ 2005 10:10

eipa va sivisferw kai egw ligo me kati pou 8eorw oti eixe ligo aksia parapavo :)
Cu, Rapid-eraser, Tα αγαθά copies κτώνται.
Love is like oxygen, You get too much you get too high
Not enough and you're gonna die, Love gets you high

Άβαταρ μέλους
cordis
Administrator, [F|H]ounder, [C|S]EO
Δημοσιεύσεις: 27616
Εγγραφή: 09 Οκτ 1999 03:00
Τοποθεσία: Greece
Επικοινωνία:

PHP Basics 05: Μεταβλητές (Variables)

Δημοσίευση από cordis » 16 Νοέμ 2005 10:38

ωραίος ο Rapid, με γλίτωσε από ένα μάθημα.. :P
Δεν απαντάω σε προσωπικά μηνύματα με ερωτήσεις που καλύπτονται από τις ενότητες του forum. Για ο,τι άλλο είμαι εδώ για εσάς.
- follow me @twitter

Άβαταρ μέλους
tolis_montana
Honorary Member
Δημοσιεύσεις: 913
Εγγραφή: 13 Απρ 2004 01:15
Τοποθεσία: στο κοσμο μου...
Επικοινωνία:

PHP Basics 05: Μεταβλητές (Variables)

Δημοσίευση από tolis_montana » 16 Νοέμ 2005 16:12

Δασκαλε μια απορια ..
$foo = 'Bob'; // βάζουμε την τιμή 'Bob' στο $foo
εκεί που βάζεις bob τι εννοεις την μεταβλητη bob η την τιμή της μεταβλητής του bob?
--------------------------
ωχχχ οκοκ γκαβομάρα.. έκανα quote την απάντηση :hammer: :hammer:

Άβαταρ μέλους
tolis_montana
Honorary Member
Δημοσιεύσεις: 913
Εγγραφή: 13 Απρ 2004 01:15
Τοποθεσία: στο κοσμο μου...
Επικοινωνία:

PHP Basics 05: Μεταβλητές (Variables)

Δημοσίευση από tolis_montana » 16 Νοέμ 2005 16:19

rabid τα variable variable στο πρώτο παράδειγμα ειναι τα ++ ?δηλαδεί προσθετει +1 στην αρχική τιμή του bob?

Άβαταρ μέλους
tolis_montana
Honorary Member
Δημοσιεύσεις: 913
Εγγραφή: 13 Απρ 2004 01:15
Τοποθεσία: στο κοσμο μου...
Επικοινωνία:

PHP Basics 05: Μεταβλητές (Variables)

Δημοσίευση από tolis_montana » 16 Νοέμ 2005 16:22

οσο για το δευτερο παραδειγμα πλήρως κατανοητό hehe δε καταλαβα τίποτα πιστευω να μην είμαι ο μοναδικός..

Άβαταρ μέλους
cordis
Administrator, [F|H]ounder, [C|S]EO
Δημοσιεύσεις: 27616
Εγγραφή: 09 Οκτ 1999 03:00
Τοποθεσία: Greece
Επικοινωνία:

PHP Basics 05: Μεταβλητές (Variables)

Δημοσίευση από cordis » 16 Νοέμ 2005 16:37

puntakias έγραψε:Δασκαλε μια απορια ..
$foo = 'Bob'; // βάζουμε την τιμή 'Bob' στο $foo
εκεί που βάζεις bob τι εννοεις την μεταβλητη bob η την τιμή της μεταβλητής του bob?
--------------------------
ωχχχ οκοκ γκαβομάρα.. έκανα quote την απάντηση :hammer: :hammer:
Κάνω αυτό που λέει το σχόλιο...
βάζουμε την τιμή 'Bob' στην μεταβλητή $foo
;)
puntakias έγραψε:rabid τα variable variable στο πρώτο παράδειγμα ειναι τα ++ ?δηλαδεί προσθετει +1 στην αρχική τιμή του bob?
έτσι είναι.. ;)
Τελευταία επεξεργασία από το μέλος cordis την 16 Νοέμ 2005 16:38, έχει επεξεργασθεί 1 φορά συνολικά.
Δεν απαντάω σε προσωπικά μηνύματα με ερωτήσεις που καλύπτονται από τις ενότητες του forum. Για ο,τι άλλο είμαι εδώ για εσάς.
- follow me @twitter

Άβαταρ μέλους
Rapid-eraser
WebDev Moderator
Δημοσιεύσεις: 6851
Εγγραφή: 05 Απρ 2003 17:50
Τοποθεσία: Πειραιάς
Επικοινωνία:

PHP Basics 05: Μεταβλητές (Variables)

Δημοσίευση από Rapid-eraser » 16 Νοέμ 2005 18:40

Katarxiv ta paradigmata ama ta trekseis 8a katalabeis ti simbevei :P

Ev sivexeia eivai Rapid :P kai dev eimai sivadelfos tou Bugs bany !!!!

O telestis ++ kavei afksis stnv timi mias metablitis
kata eva. Av briskete aristera apo tnv metabliti ektelite prota n afksis kai meta to ipolipo tis gramis
Av brisete deksia , prota ektelite n ipolipi grami kai meta n afksis.

Twra gia ta variable variables.
Otav apo8ikefseis se mia metabliti mia timi
av afti eivai valid variable mporeis va dimiourgeis eva variable variable.

$foo = 'bar';

Edw apla exo apo8ikefsei stnv $foo to string bar tipota parapavo. Dev exo dilosei pou8eva tnv bar akoma sav metabliti. To kavo stnv epomevi grami omos.

$bar = 1;

Dimiourgo tnv $bar kai apo8ikebw tnv timi int 1.
Stnv sivexeia kavo to trick me tnv afksisi alla oxi amesa stnv $bar alla stnv porinting var pou exei n variable variable $$foo
Epidi n $foo periexei tnv timi bar kalovtas tnv foo os variable variable dixvw stnv php oti 8elw tnv metabliti pou dixvei to periexomevo tis metablitis mou.
Me alla logia tnv $bar.

$$foo++;
echo $bar;

8a dosei telika 2 kai afto giati afksise tnv timi tis metablitis kavovtas xrisi tou VV pou edixve stnv metabliti $bar .

Prosoxi sta kefalea kai mikra, oi metablites stnv php exouv simasia pos exouv oristei (kati pou dev simbevei gia tnv functions/objects)
Cu, Rapid-eraser, Tα αγαθά copies κτώνται.
Love is like oxygen, You get too much you get too high
Not enough and you're gonna die, Love gets you high

LiRoi
Δημοσιεύσεις: 8
Εγγραφή: 30 Σεπ 2005 01:35
Τοποθεσία: Salonica

PHP Basics 05: Μεταβλητές (Variables)

Δημοσίευση από LiRoi » 17 Νοέμ 2005 03:05

Παιδια σορρυ... αλλα ειμαι κι εγω ενας απο τους καθυστερημενους μαθητες αυτου του tutorial! :lol: Το ιδιο μαλλον 'καθυστερημενες' ειναι και οι ερωτησεις που θελω να σας κανω, αλλα ελπιζω να δειξετε λιγη κατανοηση και να βοηθησετε την κατασταση.

1. Στο tutorial "Το πρωτο μας PHP script"
Ο Cordis έγραψε:
Δημιουργούμε ένα νέο text αρχείο με το notepad και το ονομάζουμε first.php. Το σώζουμε και το τοποθετούμε με FTP στον web server μας.
Πως ακριβως γινετε αυτο (FTP); Χρειαζεται ειδικο software;
Οταν λεμε "web server μας" ουσιαστικα εννοουμε τον υπολογιστη μας;

2. Εχω εγκαταστησει το EasyPHP. Χρειαζομαι και κατι αλλο για να αναγνωριζει το συστημα μου PHP;

Ναστε καλα!! Πολυ καλη προσπαθεια τα online tutorials για PHP!
Keep teaching...
Hong Kong... a distant dream!

Άβαταρ μέλους
ThyClub
Honorary Member
Δημοσιεύσεις: 5312
Εγγραφή: 17 Νοέμ 2003 00:21
Τοποθεσία: Hell's Kitchen
Επικοινωνία:

PHP Basics 05: Μεταβλητές (Variables)

Δημοσίευση από ThyClub » 17 Νοέμ 2005 06:23

Μπορείς να δείς αυτό : http://www.freestuff.gr/forums/viewtopic.php?t=19105 και αν δεν το καταλάβεις ξαναρωτάς

Άβαταρ μέλους
cordis
Administrator, [F|H]ounder, [C|S]EO
Δημοσιεύσεις: 27616
Εγγραφή: 09 Οκτ 1999 03:00
Τοποθεσία: Greece
Επικοινωνία:

PHP Basics 05: Μεταβλητές (Variables)

Δημοσίευση από cordis » 17 Νοέμ 2005 11:29

LiRoi έγραψε:Πως ακριβως γινετε αυτο (FTP); Χρειαζεται ειδικο software;
Οταν λεμε "web server μας" ουσιαστικα εννοουμε τον υπολογιστη μας;
Αυτό νομίζω ότι δεν έχει καμία σχέση με αυτό το μάθημα και με τα variables. παρακαλώ να βάζουμε τις ερωτήσεις μας στο αντίστοιχο μάθημα.

Ευχαριστώ.
Δεν απαντάω σε προσωπικά μηνύματα με ερωτήσεις που καλύπτονται από τις ενότητες του forum. Για ο,τι άλλο είμαι εδώ για εσάς.
- follow me @twitter

Απάντηση

Επιστροφή στο “PHP Προγραμματισμός”

Μέλη σε σύνδεση

Μέλη σε αυτήν τη Δ. Συζήτηση: Δεν υπάρχουν εγγεγραμμένα μέλη και 4 επισκέπτες