#13407 [Opn->Bgs]: array index "2147483647" not equivalent to 2147483647
| From: | kalowsky@php.net | Date: | Wed, 14 Aug 2002 02:59:12 +0000 |
| Subject: | #13407 [Opn->Bgs]: array index "2147483647" not equivalent to 2147483647 | ||
| References: | 1 | Groups: | php.bugs |
| Request: | Send a blank email to php-bugs+get-16702@lists.php.net to get a copy of this message | ||
ID: 13407
Updated by: kalowsky@php.net
Reported By: trobinson@gksystems.com
-Status: Open
+Status: Bogus
Bug Type: Scripting Engine problem
PHP Version: 4.0.4pl1
New Comment:
Thank you for taking the time to report a problem with PHP.
Unfortunately you are not using a current version of PHP --
the problem might already be fixed. Please download a new
PHP version from http://www.php.net/downloads.php
If you are able to reproduce the bug with one of the latest
versions of PHP, please change the PHP version on this bug report
to the version you tested and change the status back to "Open".
Again, thank you for your continued support of PHP.
Previous Comments:
------------------------------------------------------------------------
[2001-12-14 14:15:21] yohgaki@php.net
Any update for this?
------------------------------------------------------------------------
[2001-09-23 15:18:01] jeroen@php.net
I assume there somewhere needs to be one more than the index, for some
reason... people should, IMHO, realize that computers have limited
capacity for integer numbers, well, at least most languages do.
And wether it goes wrong at max-1 or exactly at max, isn't really an
issue IMO. You should not rely on the outer regions of the capacity of
integer numbers.
But there is one other reason why this isn't bogus after all, because
$ar[ digits ] and $ar[ "digits" ] (digits := [0-9]+ ) should be
equivalent. This is true inside the bounds (because both come down to
an integer), and outside the bounds (because both come down to the same
string). But for this case it is NOT true...
------------------------------------------------------------------------
[2001-09-23 15:06:43] jeroen@php.net
I assume there somewhere needs to be one more than the index, for some
reason... people should, IMHO, realize that computers have limited
capacity for integer numbers, well, at least most languages do.
And wether it goes wrong at max-1 or exactly at max, isn't really an
issue IMO. You should not rely on the outer regions of the capacity of
integer numbers.
But there is one other reason why this isn't bogus after all, because
$ar[ digits ] and $ar[ "digits" ] (digits := [0-9]+ ) should be
equivalent. This is true inside the bounds (because both come down to
an integer), and outside the bounds (because both come down to the same
string). But for this case it is NOT true...
------------------------------------------------------------------------
[2001-09-23 14:59:10] rasmus@php.net
Hrm.. Sure, that is the kneejerk response, but "too near"? 2147483647
is 2^31 - 1. I could understand if this happened at 2^31+1 and up, but
not at 2^31 - 1. I'd like to see a better explanation of why this
happens at instead of at 21474836478
------------------------------------------------------------------------
[2001-09-23 14:52:16] jeroen@php.net
Integers are limited in capacity, you're too near the bounds of
integer. If you need such high numbers, see GMP.
Not a bug. (though technically it could be possible to let this single
number work, the next one will fail.)
Do a var_dump($ar) to see what happens.
------------------------------------------------------------------------
The remainder of the comments for this report are too long. To view
the rest of the comments, please view the bug report online at
http://bugs.php.net/13407
--
Edit this bug report at http://bugs.php.net/?id=13407&edit=1