Re: [PHP-DEV] [RFC] Binary String Comparison

[email protected] (Johannes Schlüter)
Newsgroups php.internals
Message-ID <1408375856.2617.353.camel@guybrush>
On Mon, 2014-08-18 at 23:09 +0800, Tjerk Meesters wrote:
> > On 18 Aug, 2014, at 10:47 pm, Johannes Schlüter <[email protected]> wrote:
> > 
> >> On Mon, 2014-08-18 at 14:44 +0200, Marc Bennewitz wrote:
> >> The question isn't "What's wrong with ===, strcmp()?" but "What's wrong 
> >> with ==, <, >?".
> >> 
> >> We have a standard way to compare two operands but currently we do some 
> >> magic things to solve something that don't need to be solved.
> > 
> > Still it is a key property of the language which we can't simply change.
> > Also mind this: All input data are strings and some databases also
> > return data as string. So code like
> > 
> >   if ($_GET['id'] > 0)
> > or
> >   if ($db->fetchRow()[0] == 12)
> > 
> > which is common will break.
> 
> Those two cases will actually not be affected, it's strictly string<=>string comparisons that's being discussed here. 

Meaning that simple code you find everywhere, in every second tutorial

   foreach ($db->query("SELECT id, title FROM entries") as $row) {
       echo "<tr><td";
       if ($row[0] == $_GET['highlight_id']) {
           echo " background='#ff0000'";
       }
       echo ">".htmlentities($row[1])."</td></tr>";
   }

will suddenly fail. How wonderful! (irony)

johannes

ps. yes, the example might be done nicer and better, it still represents
a common pattern.
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.