Bug #80572 [Com]: accessing array element that has an empty value does not work

From: Date: Fri, 01 Jan 2021 20:03:52 +0000
Subject: Bug #80572 [Com]: accessing array element that has an empty value does not work
References: 1  Groups: php.bugs 
Request: Send a blank email to php-bugs+get-231326@lists.php.net to get a copy of this message
Edit report at https://bugs.php.net/bug.php?id=80572&edit=1 ID: 80572 Comment by: rtrtrtrtrt at dfdfdfdf dot dfd35 Reported by: gkroll at keldine dot ca Summary: accessing array element that has an empty value does not work Status: Feedback Type: Bug Package: Session related Operating System: all PHP Version: 7.4.13 Block user comment: N Private report: N New Comment: besides the description is *not* session related you have for sure *not* posted the code throwing the error and "ERROR 8" comes anyways from somewhere else [user@localhost:/downloads]$ php -v PHP 7.4.14 (cli) (built: Dec 17 2020 21:58:06) ( NTS ) Copyright (c) The PHP Group Zend Engine v3.4.0, Copyright (c) Zend Technologies [user@localhost:/downloads]$ cat test.php <?php declare(strict_types=1); $xyz = array ('a'=>'value1', 'b'=>'', 'c'=>'value3'); var_dump ($xyz); echo "\n"; if(isset($xyz['b'])) { $foo = $xyz['b']; } $foo = $xyz['b']; echo 'foo is set to:', $foo, ': end', "\n"; [user@localhost:/downloads]$ php test.php array(3) { ["a"]=> string(6) "value1" ["b"]=> string(0) "" ["c"]=> string(6) "value3" } foo is set to:: end Previous Comments: ------------------------------------------------------------------------ [2021-01-01 19:58:15] girgias@php.net Your test script works regardless of the PHP version: https://3v4l.org/SpuFW So what is the actual issue (if any)? ------------------------------------------------------------------------ [2021-01-01 19:53:54] gkroll at keldine dot ca Description: ------------ When an array element is set to the value '' (it's empty), any attempt to access the value of that array element causes a nonsense error message: ERROR 8: Trying to access array offset on value of type bool Test script: --------------- $xyz = array ('a'=>'value1', 'b'=>'', 'c'=>'value3'); var_dump ($xyz); echo '<br />'; // let's see what we have if (isset($xyz['b'])) $foo = $xyz['b']; // no complaints here $foo = $xyz['b']; // this crashes echo 'foo is set to:', $foo, ': end', '<br />'; Expected result: ---------------- PHP 7.0 and earlier output: array(3) { ["a"]=> string(6) "value1" ["b"]=> string(0) "" ["c"]=> string(6) "value3" } foo is set to:: end I believe PHP 7.3 works too. Actual result: -------------- PHP 7.4 outputs: ERROR 8: Trying to access array offset on value of type bool ------------------------------------------------------------------------ -- Edit this bug report at https://bugs.php.net/bug.php?id=80572&edit=1

« previous php.bugs (#231326) next »