Re: 5.4 regression: non-existent sub-sub keys now have values

From: Date: Wed, 23 Nov 2011 19:47:33 +0000
Subject: Re: 5.4 regression: non-existent sub-sub keys now have values
References: 1 2 3 4 5 6 7 8 9 10  Groups: php.internals 
Request: Send a blank email to internals+get-56532@lists.php.net to get a copy of this message
Hi Stas: > I am 100% opposed to changing anything there and > re-breaking string offsets because somebody uses string indexes to > operate on strings and expect them to work in weird ways that makes > $a[0][0] work differently from $b = $a[0]; $b[0]. The fix to make $a[0][0] work is good. No argument here. The problem arises where programmers wrote code anticipating the incoming variable is an array but another programmer has passed in a string. The inital programmer wrote a validation to see if a sub-sub key isset/!empty. If that key wasn't in the array or the array was a string, the validation fails and appropriate action is taken. But now the validation passes and mayhem ensues. > If you use string > offsets on strings, expect them to be converted to numbers, it has > been there since forever and only didn't work on chained offsets > because of a bug. This is the first time in ten years I heard about string array keys being converted to integers (all be it in the context of string offsets). If this behavior is going to remain, the conversion is a strong indicator that unintended behaviors are happening. We need to follow the logic of the new array string conversion notice in 5.4 and produce a notice in this situation so programmers can address the bugs in their programs rather than being secretly bitten by this bug. Thanks, --Dan -- T H E A N A L Y S I S A N D S O L U T I O N S C O M P A N Y data intensive web and database programming http://www.AnalysisAndSolutions.com/ 4015 7th Ave #4, Brooklyn NY 11232 v: 718-854-0335 f: 718-854-0409

« previous php.internals (#56532) next »