Is there a standard way of passing an array through a query string?
To be clear, I have a query string with multiple values, one of which would be an array value.
I don't think there's a standard.
Each web environment provides its own 'standard' for such things. Besides, the url is usually too short for anything (256 bytes limit on some browsers). Of course longer arrays/data can be send with POST requests.
However, there are some methods:
There's a PHP way, which uses square brackets ([
,]
) in URL queries. For example a query such as ?array_name[]=item&array_name[]=item_2
has been said to work, despite being poorly documented, with PHP automatically converting it into an array. Source: https://stackoverflow.com/a/9547490/3787376
Object data-interchange formats (e.g. JSON - official website, PHP documentation) can also be used if they have methods of converting variables to and from strings as JSON does.
Also an url-encoder (available for most programming languages) is required for HTTP get requests to encode the string data correctly.
Although the "square brackets method" is simple and works, it is limited to PHP and arrays.
If other types of variable such as classes or passing variables within query strings in a language other than PHP is required, the JSON method is recommended.
Example in PHP of JSON method (method 2):
$myarray = array(2, 46, 34, "dfg");
$serialized = json_encode($myarray)
$data = 'myarray=' . rawurlencode($serialized);
// Send to page via cURL, header() or other service.
Code for receiving page (PHP):
$myarray = json_decode($_GET["myarray"]); // Or $_POST["myarray"] if a post request.