Как я могу передать значения массива через отправку формы? - PullRequest
1 голос
/ 28 июля 2011

Я пытаюсь передать массив значений через отправку формы. Как пример:

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

Простым решением для меня было бы сделать следующее, чтобы получить значения на новой странице:

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

Сложность, с которой я сталкиваюсь, заключается в том, что переменная после слова «значение», прошедшего через форму, будет меняться с каждым представлением. Поэтому я изменил код так:

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

Как вы можете видеть здесь, я передал переменную, полученную из значения, в качестве параметра GET. Моя попытка получить эти значения для индивидуального отображения на представленной странице выглядит следующим образом:

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

echo $value . '<br>';

Этот код почти работает. Я могу получить последний массив, который передается для отображения. Как я могу исправить этот код, чтобы все переданные значения отображались на отправленной странице?

Ответы [ 3 ]

2 голосов
/ 28 июля 2011

Использовать нотацию массива PHP для полей формы:

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

Это приведет к тому, что $ _GET ['val'] будет массивом:

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

Если вы не можете переставитьURL, подобный этому, вы можете попробовать использовать preg_grep:

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

, который будет возвращать:

$matches= array('variable1', 'variable2', 'variable3', etc...);
1 голос
/ 28 июля 2011

Используйте массив, например, такой, без необходимости использования переменной $ variable.

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

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

EDIT: еще один способ получить значения - это зацикливание всего массива $ _GET и его разборвот так (переменные всегда в форме «значения», за которым следуют числа X):

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;
    }
}
0 голосов
/ 28 июля 2011
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...