rfc:comparison_inconsistency

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:comparison_inconsistency [2013/11/22 01:40] – [PHP RFC: Existing comparison and conversion behaviors to disscuss] yohgakirfc:comparison_inconsistency [2014/01/08 01:56] yohgaki
Line 1: Line 1:
  
-====== PHP RFC: Existing comparison and conversion behaviors to discuss  ======+====== PHP RFC: Existing comparison and conversion behaviors to discuss/document  ======
   * Version: 0.1   * Version: 0.1
   * Date: 2013-10-31   * Date: 2013-10-31
Line 136: Line 136:
   "Array"   "Array"
   "          b"   "          b"
 +
 +==== String Integer conversion ====
 +
 +PHP converts "integer like string to integer".
 +
 +  <?php
 +  
 +  // this is the problem, which we'd expect
 +  // to return false, but which returns true:
 +  echo (2 == '2b').'<br />';
 +  
 +  // this is probably what's happening:
 +  echo (2 == intval('2b')).'<br />';
 +  
 +  // this is what probably should happen:
 +  echo (strval(2) != '2b').'<br />';
 +  
 +  ?>
 +
 +https://bugs.php.net/bug.php?id=66211
 +
 +==== NAN/INF of float ====
 +
 +NAN/INF issue.
 +
 +  $f = NAN;
 +  var_dump(++$f);                 // float NAN
 +  var_dump((float) NAN);   // float NAN
 +  var_dump((int) NAN);       // int -2147483648 -> what?
 +  var_dump((bool) NAN);   // bool true -> makes sense
 +  
 +  $f = INF;
 +  var_dump(++$f);                         // float INF
 +  var_dump((float) INF);             // float INF
 +  var_dump((int) INF);                 // int 0 -> what?
 +  var_dump((bool) INF);             // bool true -> so why int 0?
 +  var_dump((int) (bool) INF);   // int 1
 +
 +E_WARNING for these invalid/unreliable operations might be better.
 + 
 +This could be mitigated by GMP float support.
 +
 +
 +==== Object Array conversion of numeric property/index ====
 +
 +https://bugs.php.net/bug.php?id=66173
 +
 +  $ php -v
 +  PHP 5.5.7 (cli) (built: Dec 11 2013 07:51:06) 
 +  Copyright (c) 1997-2013 The PHP Group
 +  Zend Engine v2.5.0, Copyright (c) 1998-2013 Zend Technologies
 +  
 +  $ php -r '$obj = new StdClass; $obj->{12} = 234; ${1} = 567; var_dump($obj, ${1}); $ary = (array)$obj; var_dump($ary, $ary[12]);'
 +  object(stdClass)#1 (1) {
 +    ["12"]=>
 +    int(234)
 +  }
 +  int(567)
 +
 +
 +  Notice: Undefined offset: 12 in Command line code on line 1
 +  array(1) {
 +    ["12"]=>
 +    int(234)
 +  }
 +  NULL <= SHOULD BE int(234)
 +
 +
  
  
 ==== Function/Method ==== ==== Function/Method ====
 +
 +=== is_numeric ===
 +
 +https://bugs.php.net/bug.php?id=66399
 +
 +
 +=== base_convert ====
 +
 +https://wiki.php.net/rfc/base-convert
 +
  
 === min() function === === min() function ===
Line 172: Line 250:
 There are bug reports that complain return value inconsistency. The document could be improved with more explanations. There are bug reports that complain return value inconsistency. The document could be improved with more explanations.
  
-== Related Bug Reports ==+**Related Bug Reports**
   * https://bugs.php.net/bug.php?id=60338 (Returns value for wrong key())   * https://bugs.php.net/bug.php?id=60338 (Returns value for wrong key())
   * https://bugs.php.net/bug.php?id=64860 (returns NULL for wrong file parameter)   * https://bugs.php.net/bug.php?id=64860 (returns NULL for wrong file parameter)