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