开发者

How Can I Pass Array Values through Form Submission?

开发者 https://www.devze.com 2023-03-23 03:46 出处:网络
I am trying to pass an array of values through a form submission. As an example: example.com?value1=178&value2=345&value3=2356

I am trying to pass an array of values through a form submission. As an example:

example.com?value1=178&value2=345&value3=2356

The easy solution would be for me to do the following to get the values on the new page:

$value1=$_GET['value1'];
$value2=$_GET['value2'];
$value3=$_GET['value3'];

The difficulty that I am having is that the variable after the word 'value' passed through the form will change with each submission. So I have amended the code to pass as:

example.com?value14=178&variable=14&value23=345&variable=23&value63=2356&variable=63

As you can see here, I have now passed the variable that comes in from of the value as a GET parameter. My attempt then GET these values to display individually on the submitted page is as follows:

$variable=$_GET['variable'];    
$value=$_GET['value'.$variable];

echo $value . '<br>';

This code almost works. I am able to get the last array which开发者_运维百科 is passed through to display. How can I fix this code to get all of the passed values to display on the submitted page?


Use PHP's array notation for form fields:

val[]=178&val[]=14&val[]=345&etc...

This will cause $_GET['val'] to be an array:

$_GET = array(
   'val' => array(178, 14, 345, etc...)
)

If you can't rearrange the URL like that, you can try using preg_grep:

$matches = preg_grep('/^variable\d+$/', array_keys($_GET));

which'll return :

$matches= array('variable1', 'variable2', 'variable3', etc...);


Use an array, for example like this without the need for variable $variable.

example.com?value[14]=178&value[23]=345&value[63]=2356

foreach ($_GET['value'] as $key => value) {
    echo $key . " => " . $value . "<br/>";
}

EDIT: Another way for getting the values would be looping the whole $_GET -array and parsing values from there like this (variables are always in the form of "value" followed by X numbers):

example.com?value14=178&value23=345&value63=2356

$values = array();
foreach ($_GET as $key => $value) {
    if (preg_match('/^value[\d]+$/', $key)) {
        // remove "value" from the beginning of the key
        $key = str_replace('value', '', $key);
        // save result to array
        $values[$key] = $value;
    }
}


See http_build_query()

0

精彩评论

暂无评论...
验证码 换一张
取 消