SOLVED: PHP τρέλα με comparison!
Theodore Lytras
thlytras at gmail.com
Thu Aug 23 22:54:35 EEST 2007
Στις Πέμπτη 23 Αύγουστος 2007 20:41, ο/η Kostas Blekos έγραψε:
> Theodore Lytras <thlytras at gmail.com> on Thu, Aug 23, 2007 (19:46 +0300)
wrote:
[snip]
> > <?php
> > $dummy="hello world";
> > if ($dummy==0) { echo "Universe has no logic!"; }
> > else { echo "Universe has logic"; }
> > ?>
> > Τρέχω το script και ο υπολογιστής μου λέει οτι το σύμπαν δεν έχει λογική.
[snip]
> Ε, τί περιμένεις όταν συγκρίνεις string με integer; :p
> Το manual[1] αναφέρει: "If you compare an integer with a string, the
> string is converted to a number."
> Δες επίσης το http://gr2.php.net/manual/en/types.comparisons.php
Αυτό ήταν! Ευχαριστώ πολύ. Η αλήθεια είναι οτι το βρίσκω αρκετά
counter-intuitive. Αν κάποιος θέλει να κάνει loose comparison μεταξύ string
και integer, δε θα ήταν εκατομμύρια φορές πιο λογικό ο integer να μετατραπεί
σε string και όχι the other way around???
Στις Πέμπτη 23 Αύγουστος 2007 20:16, ο/η Tasos Laskos έγραψε:
> Sorry gia to double post alla ksexasa na anafero pos eixes la8os operand
> (==). O operand pou 8a douleve einai o "===" giati tsekarei kai ti timi kai
> to type.
Σκέφτηκα να το αναφέρω στο αρχικό post, αλλά το παρέλειψα χάριν συντομίας. Δεν
μου κάνει ο ===. Το scriptάκι του παραδείγματος είναι όπως φαντάζεστε
κομματάκι από κώδικα ενός κανονικού project στο οποίο συγκρίνω δύο μεταβλητές
που η καθε μια χωριστά μπορεί να είναι είτε string είτε integer. Δε με
ενδιαφέρει όμως ο τύπος αλλά το περιεχόμενο.
Στην προκειμένη περίπτωση η λύση του προβλήματος ήταν ένα απλό type casting:
<?php
$dummy="hello world";
if ((string)$dummy==(string)0) { echo "Universe has no logic!"; }
else { echo "Universe has logic"; }
?>
προκειμένου το σύμπαν να ξανα-αποκτήσει τη λογική του.
Θοδωρής
--
"Beauty is transitory"
"Beauty survives"
- Mr. Spock & Capt. Kirk, "That which survives", stardate unknown
by Theodore Lytras <aspirin at myrealbox.com>
More information about the Linux-greek-users
mailing list