Re: Bug 23654: str_replace doesn't handle multidimensional arrays

From: Date: Fri, 16 May 2003 18:24:59 +0000
Subject: Re: Bug 23654: str_replace doesn't handle multidimensional arrays
References: 1 2  Groups: php.internals 
Request: Send a blank email to internals+get-1600@lists.php.net to get a copy of this message
----- Original Message ----- From: "Moriyoshi Koizumi" <moriyoshi@at.wakwak.com> To: <pollita@php.net> Cc: <internals@lists.php.net> Sent: Friday, May 16, 2003 9:22 PM Subject: Re: [PHP-DEV] Bug 23654: str_replace doesn't handle multidimensional arrays > <pollita@php.net> wrote: > > > > > I've got fixes for str_replace to let it handle multidimensional arrays, > > but > > > > I'm not sure if it should be applied to the 4.3 branch or not. > > > > > > > What is your fix like? Actually the current behaviour is ugly, but I don't > > > see the idea str_replace() should always be able to handle multi-dim > > > arrays as not all the users want it to do so. At most we'd be better off > > > if nested arrays were ignored. > > > > > That may be the better way to go. The fix I've got will traverse down the > > array reentrantly, but it's occured to me that it'll choke on a recursive > > array structure (i.e.: $array[] = &$array; ) That's fixable too of > > course, but it starts to get progressively ugly. Simply patching in this > > should do what you describe and keep everyone happy without making a > > significant change in branch. Maybe 5.0 can include an option to traverse > > down, maybe not... > > Recursive arrays can be ignored because it is by no means a desired > behaviour IMO. > > Anyway do we have to introduce str_replace_recursive() in 5.0 ? :) or most > likely the fifth argument? Little problem is that the fourth parameter should be real var (as far as I can see), and ppl who want to use the recursive behaviour should pass a var. Maybe if the fourth argument is not real var then use it as bool for the recursive stuff. On the other hand if it is real var then check for the 5th parameter. Too confusing, isn't it :) Andrey

« previous php.internals (#1600) next »