On Tue, Aug 19, 2014 at 11:07 AM, Tjerk Meesters <tjerk.meest...@gmail.com> wrote:
> > On Mon, Aug 18, 2014 at 11:30 PM, Johannes Schlüter < > johan...@schlueters.de> wrote: > >> On Mon, 2014-08-18 at 23:09 +0800, Tjerk Meesters wrote: >> > > On 18 Aug, 2014, at 10:47 pm, Johannes Schlüter < >> johan...@schlueters.de> 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) >> > > Not necessarily and certainly not by definition; reasons for failure are > less obvious such as (but not limited to): > > "0" == "0.0" > "11" == " 11" (but note that "11" == "11 " currently yields false) > "0" == "" > I had mistakenly assumed that "0" == "" would currently yield true, but it doesn't. My apologies for that. The other two statements are still valid, though. So are these: "0" == "0x0" "0" == "00" > I'm not arguing for or against this behaviour change, but I found it > necessary to clear up some apparent confusion as to what repercussions this > proposal carries. > > Another approach of attempting to solve the common issue of comparing big > numbers with '==' is to only enforce string-wise comparison if a number > cast would cause precision loss. > > >> johannes >> >> ps. yes, the example might be done nicer and better, it still represents >> a common pattern. >> >> > > > -- > -- > Tjerk > -- -- Tjerk