ID: 745 Updated by: [EMAIL PROTECTED] Reported By: [EMAIL PROTECTED] Status: Analyzed Bug Type: Scripting Engine problem Operating System: * PHP Version: 4.3.0-dev New Comment:
Given raw post data of: foo%5B123%5D.x=5&foo%5B123%5D.y=10 I disagree with having the script engine turn that into: [foo] => Array ( [123] => Array ( [x] => 5 [y] => 10 ) ) as this would break backward compatability (though I doubt many scripts are using this to be honest). There are two sensical solution that pop into my head: #1) [foo] => Array ( [123] => 10 // For BC [123.x] => 5 [123.y] => 10 ) >From an engine stand point all this says is "if the ] is not at the end of the varname, move it there." However, I don't like this idea either. While it makes the data accessable without breaking anything, it's just plain ugly. #2) [foo] => Array ( [123] => 10 // For BC ) [foo_x] => Array ( [123] => 5 ) [foo_y] => Array ( [123] => 10 ) >From an engine stand point all this says is "if there is a [] block which is not at the end of the varname, make one copy of the var with the end truncated, then move the [] block to the end and export that varname as well." i.e.: foo[123]bar => foo[123] && foobar[123] And come to that it would want to include cases where there is non [] text between [] blocks: i.e.: foo[123]bar[456] => foo[123][456] && foobar[123][456] or possibly... foo[123]bar[456] => foo[123][456] && foo[123][bar][456] I can get behind this approach... At least in principal... But I don't believe in its need enough to work on it unless it gets a several +1s. It also has the disadvantage of allowing scripters to get used to naming their form elements incorrectly. (Not that the image example is incorrect, per se, but it's a special case as the browser modifies the name beyond the control of the designer). Previous Comments: ------------------------------------------------------------------------ [2002-07-01 08:49:43] [EMAIL PROTECTED] Raw post data and resulting variables: foo%5B123%5D.x=5&foo%5B123%5D.y=10 Array ( [foo] => Array ( [123] => 10 ) ) bar%5B%5D.x=5&bar%5B%5D.y=10 Array ( [bar] => Array ( [0] => 5 [1] => 10 ) ) foobar.x=5&foobar.y=10 Array ( [foobar_x] => 5 [foobar_y] => 10 ) Not very consistent.. ------------------------------------------------------------------------ [2002-01-14 05:57:40] [EMAIL PROTECTED] what a load of wank ------------------------------------------------------------------------ [2001-12-12 15:02:08] [EMAIL PROTECTED] Personally, I would rather avoid adding configuration directives for something as small as this! :) ------------------------------------------------------------------------ [2001-12-12 14:45:10] [EMAIL PROTECTED] i'd like to have $whatever[...][...][x] and $whatever[...][...][y] in all cases, maybe with ini switches for old, new or both ... ------------------------------------------------------------------------ [2001-12-12 14:33:25] [EMAIL PROTECTED] Maybe we should just make $foo_x[123] and $foo_y[123] available in addition to $foo[123]? That should keep BC and still do things right, though we might want to change the value of $foo[123] to something like 'x,y' instead of just y??? ------------------------------------------------------------------------ The remainder of the comments for this report are too long. To view the rest of the comments, please view the bug report online at http://bugs.php.net/745 -- Edit this bug report at http://bugs.php.net/?id=745&edit=1