php / php/php-src

Initializing array element with reference returned by function not possible

Open
#17,773 1 comment 1 reaction 0 assignees View on GitHub

Nobody has claimed this yet.

Bug Category: Engine Status: Verified
Dominant language
C
Stars
40.4k
Forks
8.1k
Avg merge
2d 13h
Merged PRs (30d)
96

Description

Description

Please note that when removing the ampersand at line 13 it seems to work but then it's no longer a reference.

<?php
function &moh()
{
  static $o;
  return $o;
}

// works
$jo = [0];
$jo[0] = &moh();

// shows error
$jo = [&moh()];

Resulted in this output:

Fatal error: Can't use function return value in write context in /home/user1/Schreibtisch/test.php on line 13

But I expected this output instead:

PHP Version

PHP 8.4.4

Operating System

3v4l

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start by running the PHP 8.4.4 reproducer from the issue, comparing the array initializer with the later assignment using &moh(). The issue names no source file or test; completion requires establishing the intended behavior for a reference returned by a function in an array initializer and covering that behavior with a regression test.

Written by the indexing model from the issue text.

Assessment

Tech stack
php
Domain
compilers
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.