|
|
php.net | support | documentation | report a bug | advanced search | search howto | statistics | random bug | login |
PatchesPull RequestsHistoryAllCommentsChangesGit/SVN commits
[2019-07-08 13:33 UTC] nikic@php.net
[2019-07-08 15:25 UTC] nikic@php.net
-Status: Open
+Status: Closed
-Assigned To:
+Assigned To: nikic
[2019-07-08 15:25 UTC] nikic@php.net
|
|||||||||||||||||||||||||||
|
All rights reserved. |
Last updated: Thu Nov 06 09:00:01 2025 UTC |
Description: ------------ See reproducer: Test script: --------------- $var = function &() { $var = []; $var[] = &$var; return $var; }; $var = [$var()]; function isref1(array $a, string $k) { return null !== \ReflectionReference::fromArrayElement($a, $k); } function isref2(array $a, string $k) { $v = $a[$k]; $b = $a; $b[$k] = $c = new \stdClass(); if ($a[$k] === $c) { $a[$k] = $v; return true; } return false; } var_dump($var); var_dump([isref1($var[0], 0), isref2($var[0], 0)]); Expected result: ---------------- array(1) { [0]=> array(1) { [0]=> *RECURSION* } } array(2) { [0]=> bool(false) [1]=> bool(true) } Actual result: -------------- array(1) { [0]=> array(1) { [0]=> *RECURSION* } } array(2) { [0]=> bool(true) [1]=> bool(true) }