Bug #52184 [Com]: Using null as array gives no warning or error

From: 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

« previous php.bugs (#220318) next »