rfc:inconsistent-behaviors

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
Next revisionBoth sides next revision
rfc:inconsistent-behaviors [2014/02/05 21:45] sanfordwhitemanrfc:inconsistent-behaviors [2014/02/16 07:26] yohgaki
Line 25: Line 25:
  
 Type juggling only works for INTEGER or HEX like strings. Type juggling only works for INTEGER or HEX like strings.
 +
 +Most problematic is HEX like strings being auto-coerced during
 +comparison, but using //different rules// from manual casting. That
 +is, ( 0x0A == "0x0A" ) is not treated as ( 0x0A == (int)"0x0A" ),
 +although "0x0A" //is// translated to a number.
 +
 +This despite http://us2.php.net/manual/en/language.operators.comparison.php, which
 +states clearly that for number-string comparison, we "Translate
 +strings and resources to numbers." While it is feasible that some
 +string patterns cannot be "translated" (OCTAL and BINARY) at all, once
 +a "translation" is attempted, it should follow the same rules as (int)
 +casting for the same string. It is hard to view it is anything but a
 +bug that it does not.
  
 === HEX === === HEX ===
Line 285: Line 298:
  
 https://wiki.php.net/rfc/base-convert https://wiki.php.net/rfc/base-convert
 +
 +
 +
 +==== filter_var ====
 +
 +https://bugs.php.net/bug.php?id=66682
 +
 +<code php>
 +var_dump(filter_var('01', FILTER_VALIDATE_INT));
 +var_dump(filter_var('01', FILTER_VALIDATE_FLOAT));
 +</code>
 +
 +<code>
 +bool(false)
 +double(1)
 +</code>
  
  
Line 303: Line 332:
  
 http://jp2.php.net/min http://jp2.php.net/min
 +
 +
  
  
rfc/inconsistent-behaviors.txt · Last modified: 2021/03/27 14:31 by ilutov