PHP Basics 04: Τύποι Δεδομένων

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

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

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

PHP Basics 04: Τύποι Δεδομένων

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

Ας δούμε τώρα ποιους τύπους δεδομένων έχουμε στην PHP.

Τέσσερις βαθμωτούς τύπους:
  • boolean του Μπουλ (True/False)
  • integer ακέραιοι αριθμοί
  • floating-point number (float) - (double) αριθμοί κινητής υποδιαστολής
  • string αλφαριθμητικά
Δύο σύνθετους τύπους:
  • array πίνακες
  • object αντικείμενα
Και δύο ειδικούς τύπους
  • resource τιμές αναφοράς με εξωτερικές πηγές
  • NULL ειδική μεταβλητή που χαρακτηρίζει το 'τίποτα' ή το 'μη ορισμένο'.
Με την συνάρτηση gettype() η PHP μας λέει τι τύπου είναι η μεταβλητή που έχουμε
Πχ.

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

<?php
$v = 5/2;
$v1 = -3;
$v2 = "Testing...";
$v3 = True;

echo $v."<br />";
echo $v1."<br />";
echo $v2."<br />";
echo $v3."<br />";
echo "<br />";
echo gettype&#40;$v&#41;."<br />";
echo gettype&#40;$v1&#41;."<br />";
echo gettype&#40;$v2&#41;."<br />";
echo gettype&#40;$v3&#41;;
?>
Αυτό θα μας βγάλει:
2,5
-3
Testing...
1

Double
Integer
String
Boolean
Βλέπουμε ότι το True στο boolean μας το εξαφανίζει ως 1, αντίστοιχα στην τιμή False θα μας εμφάνιζε 0 και όχι κάποιο από τα λεκτικά True/False.
Τελευταία επεξεργασία από το μέλος cordis την 13 Νοέμ 2005 17:59, έχει επεξεργασθεί 2 φορές συνολικά.
Δεν απαντάω σε προσωπικά μηνύματα με ερωτήσεις που καλύπτονται από τις ενότητες του forum. Για ο,τι άλλο είμαι εδώ για εσάς.
- follow me @twitter

Άβαταρ μέλους
af
Honorary Member
Δημοσιεύσεις: 2928
Εγγραφή: 06 Ιούλ 2003 17:18
Τοποθεσία: Γλυφάδα
Επικοινωνία:

PHP Basics 04: Τύποι Δεδομένων

Δημοσίευση από af » 11 Νοέμ 2005 07:00

Τώρα δυσκολεύομαι λίγο....γενικά για να το καταλάβω αλλά btw.....στον κώδικα που βλέπουμε ειναι τέσσερις βαθμωτοί τύποι όχι σύνθετοι και ειδικοί...σωστά;

Άβαταρ μέλους
dva_dev
Script Master
Δημοσιεύσεις: 3790
Εγγραφή: 16 Σεπ 2005 01:32
Επικοινωνία:

PHP Basics 04: Τύποι Δεδομένων

Δημοσίευση από dva_dev » 11 Νοέμ 2005 15:15

Τέσσερις βαθμωτούς τύπους:

* boolean δυαδικός (True/False)
* integer ακέραιοι αριθμοί
* floating-point number (float) - (double) αριθμοί κινητής υποδιαστολής
Αν δεν κάνω λάθος (αλλιώς παρακαλώ ας με διορθώσει κάποιος) οι βαθμωτοί τύπου ορίζονται από τα μαθηματικά.
Δηλαδή είναι εκείνοι οι τύποι δεδομένων στους οποίους για μια τιμή μπορεί να υπολογιστεί ποιά είναι η επόμενη και ποιά η προηγούμενη.
Συνεπώς οι ακέραιοι και οι χαρακτήρες είναι βαθμωτοί τύποι.
Ο επόμενος ακέραιος του 1 είναι το 2, κ.ο.κ. και το επόμενο γράμμα του "Α" είναι το "Β".
Οι πραγματικοί, τα strings, οι boolean δεν είναι.
Ο επόμενος πραγματικός αριθμός του 1.1 δεν υπάρχει ούτε και ο προηγούμενος.
Το επόμενο string του "ΑΑ" ποιό είναι; Το "ΑΑΑ"; το "ΑΒ"; το "ΒΑ"; το "ΑΑ\0";

Τα boolean αντιθέτως έχουν οριστεί διαφορετικά. Ορίζεται η τιμή false (και πάλι αν δεν κάνω λάθος οι compilers το αντιστοιχούν στον ακέραιο 0 - επειδή είναι προγραμματιστικά πιό εύκολο να παίζεις με ολόκληρο byte ή word από το να παιδεύεσαι με bits) και το true που ορίζεται σαν ΟΧΙ false (εδώ κάποιοι compilers το αντιστοιχούν στην τιμή 1, άλλοι στην τιμή -1, αλλά όλοι όταν καταχωρήσεις έναν μη μηδενικό ακέραιο σε μια boolean μεταβλητή καταλαβαίνουν true). Οπότε εδώ έχεις ουσιαστικά ένα σύνολο με δύο διακριτές τιμές - χωρίς να έχει οριστεί σειρά μεταξύ τους.

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

Μπορεί να τα λέω υπεραπλουστευμένα και κάπου να μην είμαι ακριβής αλλά έχουν περάσει αρκετά χρόνια από τότε που τα διάβαζα.

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

PHP Basics 04: Τύποι Δεδομένων

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

episis kata to type casting givete eva psilomperdema
px

$i = '0rapid0s';
$i++;

exei apotelesma 1 :P
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
Δημοσιεύσεις: 27617
Εγγραφή: 09 Οκτ 1999 03:00
Τοποθεσία: Greece
Επικοινωνία:

PHP Basics 04: Τύποι Δεδομένων

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

έτσι τις κατατάσσει το PHP manual, έτσι τις έβαλα κι εγώ.. ;)

http://www.php.net/manual/en/language.types.php

εκτός κι αν δεν έκανα καλή μετάφραση SCALAR -> ΒΑΘΜΩΤΟΙ
Δεν απαντάω σε προσωπικά μηνύματα με ερωτήσεις που καλύπτονται από τις ενότητες του forum. Για ο,τι άλλο είμαι εδώ για εσάς.
- follow me @twitter

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

PHP Basics 04: Τύποι Δεδομένων

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

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

Άβαταρ μέλους
af
Honorary Member
Δημοσιεύσεις: 2928
Εγγραφή: 06 Ιούλ 2003 17:18
Τοποθεσία: Γλυφάδα
Επικοινωνία:

PHP Basics 04: Τύποι Δεδομένων

Δημοσίευση από af » 12 Νοέμ 2005 10:05

oh...ok ;-)

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

PHP Basics 04: Τύποι Δεδομένων

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

Χθες συζήταγα με ένα φίλο πώς μετατρέπουμε το δεκαδικό σε δυαδικό (Boolean). Έναν αριθμό τον διαιρούμε συνεχώς με το 2. Αν το αποτέλεσμα είναι μονός αριθμός βάζουμε 1 και αν είναι ζυγός 0. Αν είπα κοτσάνα διορθώστε :)
Σύγκριση τιμών Supermarket: http://www.shopnsave.gr
Νέα Ιταλικα επιπλα κουζινας
Για φιλοσόφους: http://filosofia.gr και http://liantinis.org

Άβαταρ μέλους
dva_dev
Script Master
Δημοσιεύσεις: 3790
Εγγραφή: 16 Σεπ 2005 01:32
Επικοινωνία:

PHP Basics 04: Τύποι Δεδομένων

Δημοσίευση από dva_dev » 13 Νοέμ 2005 16:54

Αν το αποτέλεσμα είναι μονός αριθμός βάζουμε 1 και αν είναι ζυγός 0.
Κάνεις τις διαιρέσεις μέχρι να βρείς πηλίκο 0.
Διόρθωση: Βάζεις τα υπόλοιπα με την ανάποδη σειρά (το τελευταίο υπόλοιπο πρώτα).

ΥΓ. Ισχύει γενικότερα για μετατροπή σε οποιοδήποτε αριθμητικό σύστημα.

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

PHP Basics 04: Τύποι Δεδομένων

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

Μια ερώτηση μιας και που ανοίξαμε το θέμα. Για παράδειγμα παίρνουμε το 4

4/2=2
2/2=1
1/2=0,5

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

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

PHP Basics 04: Τύποι Δεδομένων

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

* είχα κάνει λάθος μετάφραση και την διόρθωσα...
cdhyper έγραψε:Χθες συζήταγα με ένα φίλο πώς μετατρέπουμε το δεκαδικό σε δυαδικό (Boolean).
το δυαδικό που λες είναι το binary

το boolean μπορεί να είναι ή 1 ή 0 (True/False) - (Σωστό/Λάθος) και δεν μπορεί να πάρει καμία άλλη τιμή και βασίζετε στην άλγευρα του [wiki]Boole[/wiki].

το 4 σε binary είναι το 100

το 4 σε boolean είναι το 1 (True) -κάθε τιμή διάφορη του 0 στην PHP είναι boolean True (1) -

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

πχ.

το 44 είναι το 101100, και αυτό βγαίνει ως εξής:
44 - 32 = 12
12 - 8 = 4
4 - 4 = 0

[table]
[row]32 [col]16 [col]8 [col]4 [col]2 [col]1
[row]1 [col]0[col]1[col]1[col]0 [col]0
[/table]

βάζουμε 1 στις δυνάμεις του 2 που μπορούμε να αφαιρέσουμε και 0 σε όσες προσπερνάμε μέχρι να έχουμε διαφορά 0.
Τελευταία επεξεργασία από το μέλος cordis την 13 Νοέμ 2005 18:06, έχει επεξεργασθεί 1 φορά συνολικά.
Δεν απαντάω σε προσωπικά μηνύματα με ερωτήσεις που καλύπτονται από τις ενότητες του forum. Για ο,τι άλλο είμαι εδώ για εσάς.
- follow me @twitter

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

PHP Basics 04: Τύποι Δεδομένων

Δημοσίευση από cdhyper » 13 Νοέμ 2005 18:04

Το κατάλαβα! Είμαι φτασμένος προγραμματιστής πλέον.
Τελευταία επεξεργασία από το μέλος cdhyper την 13 Νοέμ 2005 18:12, έχει επεξεργασθεί 2 φορές συνολικά.
Σύγκριση τιμών Supermarket: http://www.shopnsave.gr
Νέα Ιταλικα επιπλα κουζινας
Για φιλοσόφους: http://filosofia.gr και http://liantinis.org

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

PHP Basics 04: Τύποι Δεδομένων

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

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

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

PHP Basics 04: Τύποι Δεδομένων

Δημοσίευση από cdhyper » 13 Νοέμ 2005 18:13

136

136-128=8
8-8=0

Επομένως:

10001000

σωστός;

το 8 είναι
10000

το 8 είναι ένα byte σωστά; Επομένως του λείπουν άλλα 3 bit. Βάζουμε μηδενικά στην αρχή; δηλ. αν πληκτρολογήσουμε "8" στο πληκτρολόγιο το pc καταλαβαίνει αυτό: 0010000 ? ή δεν έχει καμία σχέση;
Σύγκριση τιμών Supermarket: http://www.shopnsave.gr
Νέα Ιταλικα επιπλα κουζινας
Για φιλοσόφους: http://filosofia.gr και http://liantinis.org

Άβαταρ μέλους
mrpc
WebDev Moderator
Δημοσιεύσεις: 3393
Εγγραφή: 03 Μάιος 2000 03:00
Τοποθεσία: Εξάρχεια
Επικοινωνία:

PHP Basics 04: Τύποι Δεδομένων

Δημοσίευση από mrpc » 13 Νοέμ 2005 18:39

Ένα byte είναι 8 bits. Δηλαδή 11111111, σε δεκαδικό 255. Άρα με ένα byte μπορούμε να έχουμε 256 διαφορετικές τιμές ;)

Απάντηση

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

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

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