Bug #80572 [Opn->Fbk]: accessing array element that has an empty value does not work

From: Date: Fri, 01 Jan 2021 21:11:28 +0000
Subject: Bug #80572 [Opn->Fbk]: 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-231329@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 Updated by: dharman@php.net Reported by: gkroll at keldine dot ca Summary: accessing array element that has an empty value does not work -Status: Open +Status: Feedback Type: Bug Package: Session related Operating System: all PHP Version: 7.4.13 Block user comment: N Private report: N New Comment: Thank you for this bug report. To properly diagnose the problem, we need a short but complete example script to be able to reproduce this bug ourselves. A proper reproducing script starts with <?php and ends with ?>, is max. 10-20 lines long and does not require any external resources such as databases, etc. If the script requires a database to demonstrate the issue, please make sure it creates all necessary tables, stored procedures etc. Please avoid embedding huge scripts into the report. Please provide a reproducible example. You can use https://3v4l.org/ to make sure that the example does what you think it does. Once you have a reproducible example you can share it with us and we will analyse it. For the moment, we have no way of identifying the problem. Things that you can look out for include OPCache for example. It is possible that you have encountered a bug with OPCache, so try with OPCache disabled to see if it makes a difference. The problem might not be in the code you are looking at right now. You can also check against the latest snapshot of PHP 7.4 to see if the bug has been fixed in the meantime. There is an RC for 7.4.14 available already. I know that preparing a bug report might be a daunting task but we do appreciate your willingness to help the PHP community. Previous Comments: ------------------------------------------------------------------------ [2021-01-01 20:21:14] rtrtrtrtrt at dfdfdfdf dot dfd seriously - the two code snippets have *nothing* in common! if you can't write a reproducer it makes no sense to report a bug based on what someone else said - that guy need to add at least var_dump() at the critical codepath so that you see if your assumptions what's in the array are true and i bet they aren't ------------------------------------------------------------------------ [2021-01-01 20:16:02] gkroll at keldine dot ca I do not personally have access to PHP 7.4, but one of the users of the software I am trying to support reports: ERROR 8: Trying to access array offset on value of type bool 0 Error occurred on line 209 of file ancestry_ctrl.php in function print_child_ascendancy 1 called from line 209 of file ancestry_ctrl.php in function print_child_ascendancy The line in question follows: $this->print_child_ascendancy($parents["HUSB"], $sosa*2, $depth-1); The array element $parents["HUSB"] is set here: if ($ct>0) { $parents["HUSB"]=$match[1]; } else { $parents["HUSB"]=""; } In this case, $ct is zero. Note: The array $parents is passed as a normal (not by reference) argument to the function where the error occurs. This may have something to do with the problem. ------------------------------------------------------------------------ [2021-01-01 20:03:51] rtrtrtrtrt at dfdfdfdf dot dfd35 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 ------------------------------------------------------------------------ [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 (#231329) next »