Array key access on non-array values - to be made illegal?

php.internals

Marco Pivetta

10 years ago
Hello, I just stumbled upon behavior that seems to "fail silently" regardless of its very questionable validity: <?php $a = 1; var_dump($a[123]); // NULL, no notice https://3v4l.org/b3rDr Are there specific reasons why no notice is thrown? Is it by design? If so, does anyone remember why? I haven't checked if this affects other types too. I know that an assignment to an array key of a non-array would cause a cast of the value to `array`, but a mere read operation should surely cause a notice to be raised in the above scenario. Cheers, Marco Pivetta http://twitter.com/Ocramius http://ocramius.github.com/

Ivan Enderlin @ Hoa

10 years ago
Hello Marco, Actually, you are trying to access to something that does not exist, so you get a null value. This part is logical. However, yes, a notice would be welcomed except it may be skipped for historical reasons I reckon. Probably to work well with `isset` or similar scenario. Cheers. On 12/04/16 14:59, Marco Pivetta wrote:

Christoph Becker

10 years ago
On 12.04.2016 at 14:59, Marco Pivetta wrote:
> I just stumbled upon behavior that seems to "fail silently" regardless of > its very questionable validity: > > <?php > > $a = 1; > > var_dump($a[123]); // NULL, no notice > > https://3v4l.org/b3rDr > > Are there specific reasons why no notice is thrown? Is it by design? If so, > does anyone remember why? > > I haven't checked if this affects other types too. I know that an > assignment to an array key of a non-array would cause a cast of the value > to `array`, but a mere read operation should surely cause a notice to be > raised in the above scenario.
For the record: there are several bug reports/feature requests regarding this issue, e.g. <https://bugs.php.net/bug.php?id=37676>.
-- Christoph M. Becker