|
php.net | support | documentation | report a bug | advanced search | search howto | statistics | random bug | login |
Patchesfix_to_prevent_warning_on_isset_empty_for_55_and_a_half.patch (last revision 2011-12-21 14:34 UTC by alan_k@php.net)isset_changed_warning_only_on_access.patch (last revision 2011-12-18 05:08 UTC by alan_k@php.net) string_offset_trigger_notice.patch (last revision 2011-12-05 05:17 UTC by laruence@php.net) fix_disabling_bad_string_offsets (last revision 2011-12-04 16:43 UTC by laruence@php.net) first_effort_to_fix_this (last revision 2011-12-03 15:51 UTC by alan at akbkhome dot com) bug60362.sub-sub-keys.phpt (last revision 2011-11-23 01:40 UTC by danielc at analysisandsolutions dot com) Pull RequestsHistoryAllCommentsChangesGit/SVN commits
[2011-12-04 12:52 UTC] alan at akbkhome dot com
[2011-12-04 16:43 UTC] laruence@php.net
[2011-12-04 16:43 UTC] laruence@php.net
[2011-12-04 17:26 UTC] laruence@php.net
[2011-12-04 17:27 UTC] laruence@php.net
[2011-12-05 05:17 UTC] laruence@php.net
[2011-12-05 07:34 UTC] alan_k@php.net
[2011-12-18 05:08 UTC] alan_k@php.net
[2011-12-19 02:04 UTC] stas@php.net
[2011-12-19 02:10 UTC] stas@php.net
[2011-12-19 02:10 UTC] stas@php.net
-Status: Open
+Status: Closed
-Assigned To:
+Assigned To: stas
[2011-12-21 14:34 UTC] alan_k@php.net
[2012-04-18 09:46 UTC] laruence@php.net
[2012-07-24 23:38 UTC] rasmus@php.net
[2013-11-17 09:34 UTC] laruence@php.net
|
|||||||||||||||||||||||||||
Copyright © 2001-2025 The PHP GroupAll rights reserved. |
Last updated: Fri Oct 24 19:00:01 2025 UTC |
Description: ------------ In an array, a sub-sub-key of an existing key is now returning a letter of the value indexed by the main key. This is a regression in 5.4. PHP 5.3 still operates as expected. I suspect this is related to the array dereferencing changes. Test script: --------------- $arr = array('exists' => 'foo'); if (isset($arr['exists']['non_existent'])) { echo "expected: sub-key 'non_existent' is set: "; var_dump($arr['exists']['non_existent']); } else { echo "BEHAVIOR CHANGED: sub-key 'non_existent' is not set.\n"; } if (isset($arr['exists'][1])) { echo "expected: sub-key 1 is set: "; var_dump($arr['exists'][1]); } else { echo "BEHAVIOR CHANGED: sub-key 1 is not set.\n"; } echo "-------------------\n"; if (isset($arr['exists']['non_existent']['sub_sub'])) { echo "BEHAVIOR CHANGED: sub-key 'sub_sub' is set: "; var_dump($arr['exists']['non_existent']['sub_sub']); } else { echo "good: sub-sub-key 'sub_sub' is not set.\n"; } if (isset($arr['exists'][1][0])) { echo "BEHAVIOR CHANGED: sub-sub-key 0 is set: "; var_dump($arr['exists'][1][0]); } else { echo "good: sub-sub-key 0 is not set.\n"; } echo "-------------------\n"; if (empty($arr['exists']['non_existent'])) { echo "BEHAVIOR CHANGED: sub-key 'non_existent' is empty.\n"; } else { echo "expected: sub-key 'non_existent' is not empty: "; var_dump($arr['exists']['non_existent']); } if (empty($arr['exists'][1])) { echo "BEHAVIOR CHANGED: sub-key 1 is empty.\n"; } else { echo "expected: sub-key 1 is NOT empty: "; var_dump($arr['exists'][1]); } echo "-------------------\n"; if (empty($arr['exists']['non_existent']['sub_sub'])) { echo "good: sub-sub-key 'sub_sub' is empty.\n"; } else { echo "BEHAVIOR CHANGED: sub-sub-key 'sub_sub' is not empty: "; var_dump($arr['exists']['non_existent']['sub_sub']); } if (empty($arr['exists'][1][0])) { echo "good: sub-sub-key 0 is empty.\n"; } else { echo "BEHAVIOR CHANGED: sub-sub-key 0 is not empty: "; var_dump($arr['exists'][1][0]); } Expected result: ---------------- expected: sub-key 'non_existent' is set: string(1) "f" expected: sub-key 1 is set: string(1) "o" ------------------- good: sub-sub-key 'sub_sub' is not set. good: sub-sub-key 0 is not set. ------------------- expected: sub-key 'non_existent' is not empty: string(1) "f" expected: sub-key 1 is NOT empty: string(1) "o" ------------------- good: sub-sub-key 'sub_sub' is empty. good: sub-sub-key 0 is empty. Actual result: -------------- expected: sub-key 'non_existent' is set: string(1) "f" expected: sub-key 1 is set: string(1) "o" ------------------- BEHAVIOR CHANGED: sub-key 'sub_sub' is set: string(1) "f" BEHAVIOR CHANGED: sub-sub-key 0 is set: string(1) "o" ------------------- expected: sub-key 'non_existent' is not empty: string(1) "f" expected: sub-key 1 is NOT empty: string(1) "o" ------------------- BEHAVIOR CHANGED: sub-sub-key 'sub_sub' is not empty: string(1) "f" BEHAVIOR CHANGED: sub-sub-key 0 is not empty: string(1) "o"