One feature of PHP's processing of POST and GET variables is that it automatically decodes indexed form variable names.
I've seem innumerable projects that jump through extra & un-needed processing hoops to decode variables when PHP does it all for you:
Example pseudo code:
Many web sites do this:
<input name="person_0_first_name" value="john" />
<input name="person_0_last_name" value="smith" />
<input name="person_1_first_name" value="jane" />
<input name="person_1_last_name" value="jones" />
When they could do this:
<input name="person[first_name]" value="john" />
<input name="person[last_name]" value="smith" />
<input name="person[first_name]" value="jane" />
<input name="person[last_name]" value="jones" />
With the first example you'd have to do string parsing / regexes to get the correct values out so they can be married with other data in your app... whereas with the second example.. you will end up with something like:
//will get you something like:
0 => array('first_name'=>'john','last_name'=>'smith'),
1 => array('first_name'=>'jane','last_name'=>'jones'),
This is invaluable when you want to link various posted form data to other hashes on the server side, when you need to store posted data in separate "compartment" arrays or when you want to link your POSTed data into different record handlers in various Frameworks.
Remember also that using  as in index will cause a sequential numeric array to be created once the data is posted, so sometimes it's better to define your indexes explicitly.