This article is regarding an under-documented PHP feature when dealing with form data received from an HTML page (this works with both GET and POST data). If you name your HTML elements the proper way, you are able to send multidimensional arrays (or single dimension arrays for that matter) to your PHP script and access them using the $_POST superglobal array. You can use both associative arrays and numerical arrays. Pretty much any type of array that you can build in native PHP can be represented in an HTML form.
Here’s the syntax you’ve been waiting for. The first example will use numerical indexes, which will be automatically calculated by PHP, similar to doing $arr = ‘a’; $arr = ‘b’; :
<input name="address" value="1313 Mockingbird Ln" /> <input name="address" value="Appartment D" /> <input name="airport" value="DET" /> <input name="airport" value="JFK" /> <input name="person[john]" value="man" /> <input name="person[sue]" value="woman" /> <input name="person[john][name]" value="Johnathan" /> <input name="person[john][age]" value="39" />
Now, if we POST this data to the server, and do a <pre><?php print_r($_POST); ?></pre>, we will get the following data structure:
Array ( [address] => Array (  => 1313 Mockingbird Ln  => Appartment D ) [airport] => Array (  => DET  => JFK ) [person] => Array ( [john] => Array ( [name] => Johnathan [age] => 39 ) [sue] => woman ) )
And that’s all there is to it! My examples don’t really show off the usefulness of this feature though. The best usage is for iterating over a large list of data returned to the server, especially when dealing with dynamically generated lists of data inputs. For example, if you have an application where you need to edit X number of employees, and you make changes to only some of them (but not all of them), this will give you a list of specific items.
Latest posts by Thomas Hunter II (see all)
- Recent Concerns about Node.js Security - 2018-06-12
- Creating and Integrating a Node Lambda function with API Gateway - 2018-04-02
- Developing Cobalt Dungeon using Phaser and Cordova - 2018-03-27