Bug #52184 [Com]: Using null as array gives no warning or error
| From: | d dot mathis at firegroup dot com | Date: | Thu, 04 Apr 2019 13:24:26 +0000 |
| Subject: | Bug #52184 [Com]: Using null as array gives no warning or error | ||
| References: | 1 | Groups: | php.bugs |
| Request: | Send a blank email to php-bugs+get-220318@lists.php.net to get a copy of this message | ||
Edit report at https://bugs.php.net/bug.php?id=52184&edit=1
ID: 52184
Comment by: d dot mathis at firegroup dot com
Reported by: egorinsk at gmail dot com
Summary: Using null as array gives no warning or error
Status: Not a bug
Type: Bug
Package: *General Issues
Operating System: linux
PHP Version: 5.3.2
Block user comment: N
Private report: N
New Comment:
This has been marked as not a bug.
Yet compared to all other Erros and Notices this should also throw at least a notice.
If this had been cast to a string, it would throw a "Notice: Uninitialized string offset:"
<?php
$array = null;
$value = $array['one']['two'];
Previous Comments:
------------------------------------------------------------------------
[2010-07-01 03:43:37] anon at anon dot com
He has an interesting point.
For arrays you get "undefined offset".
For strings, "uninitialized string offset".
For objects, "cannot use object of type foo as array".
For null, numbers, bools, no error, no nothing.
------------------------------------------------------------------------
[2010-06-26 00:04:26] egorinsk at gmail dot com
Thank you for your response.
> You aren't accessing an array offset but a string offset. null is casted to String. The
> string is shorter than the offset (length is 0) so it returns NULL.
Well, PHP emits a notice when accessing uninitialized string offset, so this is not the case:
~: php -r 'error_reporting(E_ALL); $a=""; echo $a[12]; '
PHP Notice: Uninitialized string offset: 12 in Command line code on line 1
PHP Stack trace:
PHP 1. {main}() Command line code:0
Notice: Uninitialized string offset: 12 in Command line code on line 1
Call Stack:
0.0002 317032 1. {main}() Command line code:0
Anyway, I guess there should be at least warning, because null is neither a string, nor array, and
trying to access element of null is obviously an error, and I, as a developer, would prefer to have
it logged.
------------------------------------------------------------------------
[2010-06-25 15:25:41] johannes@php.net
Thank you for taking the time to write to us, but this is not
a bug. Please double-check the documentation available at
http://www.php.net/manual/ and the instructions on how to
report
a bug at http://bugs.php.net/how-to-report.php
You aren't accessing an array offset but a string offset. null is casted to String. The string
is shorter than the offset (length is 0) so it returns NULL.
------------------------------------------------------------------------
[2010-06-25 13:39:14] egorinsk at gmail dot com
Description:
------------
Using null as array gives no warning, notice or error, just returns null. It is at least strange.
Test script:
---------------
<?php
error_reporting(E_ALL);
$a = null;
echo $a[12]; // Gives no warning, notice or error
?>
Expected result:
----------------
Some kind of notice or warning.
Actual result:
--------------
(nothing)
------------------------------------------------------------------------
--
Edit this bug report at https://bugs.php.net/bug.php?id=52184&edit=1