php.net |  support |  documentation |  report a bug |  advanced search |  search howto |  statistics |  random bug |  login
Bug #80572 accessing array element that has an empty value does not work
Submitted: 2021-01-01 19:53 UTC Modified: 2021-01-02 13:33 UTC
From: gkroll at keldine dot ca Assigned:
Status: Not a bug Package: Session related
PHP Version: 7.4.13 OS: all
Private report: No CVE-ID: None
View Add Comment Developer Edit
Welcome! If you don't have a Git account, you can't do anything here.
You can add a comment by following this link or if you reported this bug, you can edit this bug over here.
(description)
Block user comment
Status: Assign to:
Package:
Bug Type:
Summary:
From: gkroll at keldine dot ca
New email:
PHP Version: OS:

 

 [2021-01-01 19:53 UTC] 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

Patches

Add a Patch

Pull Requests

Add a Pull Request

History

AllCommentsChangesGit/SVN commitsRelated reports
 [2021-01-01 19:58 UTC] girgias@php.net
-Status: Open +Status: Feedback
 [2021-01-01 19:58 UTC] 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 20:03 UTC] 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 20:16 UTC] gkroll at keldine dot ca
-Status: Feedback +Status: Open
 [2021-01-01 20:16 UTC] 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:21 UTC] 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 21:11 UTC] dharman@php.net
-Status: Open +Status: Feedback
 [2021-01-01 21:11 UTC] dharman@php.net
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.
 [2021-01-02 12:26 UTC] gkroll at keldine dot ca
-Status: Feedback +Status: Open
 [2021-01-02 12:26 UTC] gkroll at keldine dot ca
Not a bug after all.  The user that reported the problem to me cleared the cache, and the problem went away.

Thank you for the link to the on-line shell where snippets of PHP code can be tested.  I was not aware that this very useful site existed.

Please close this report, or delete it, or whatever.  Sorry to have wasted your time.
 [2021-01-02 13:33 UTC] girgias@php.net
-Status: Open +Status: Not a bug
 [2021-01-02 13:33 UTC] girgias@php.net
Cache issues aren't bugs indeed
 
PHP Copyright © 2001-2024 The PHP Group
All rights reserved.
Last updated: Tue Apr 30 06:01:29 2024 UTC