У меня есть URL-адрес веб-сайта, подобный следующему:
www.localhost.com/page?x=1&y=2
Теперь я хочу получить все параметры GET в массиве, как показано ниже:
$array[0] = 1;
$array[1] = 2;
Спасибо.
взгляните на: shodor.org/~kevink/phpTutorial/nileshc_getreqpost.php






Вы можете использовать глобальную переменную $ _GET в самом PHP.
$array = [];
foreach($_GET as $key => $value) {
array_push($array, $value);
}
Вы можете использовать PHP array_values(), если хотите получить все значения этого массива без учета ключей:
$array = array_values($_GET);
Вы можете напрямую читать из глобального $ _GET и создавать массив с ключами:
$array = [
'y' => $_GET['y'],
'x' => $_GET['x'],
];
Вы также можете использовать новый синтаксис:
$array = [];
foreach($_GET as $key => $val)
{
$array[$key] = $value;
}
Почему нужно делать это, а не напрямую использовать $_GET?
Это просто копия ссылок в $_GET в $array с теми же индексами.
Есть ли разница между вышеперечисленным и $array = $_GET? Этот массив также не имеет числового индекса.
Вы также можете использовать встроенную функцию PHP array_values (), чтобы сделать то же самое. Согласно документации:
Returns an indexed array of values.
Это сохранит порядок значений, который был изначально в массиве $_GET. Например:
/**
* With $_GET input array of:
*
* ['a' => 'apple', 'c' => 'cantaloupe', 'b' => 'banana']
*/
$indexed = array_values($_GET);
/**
* Will output an indexed array of:
*
* [0 => 'apple', 1 => 'cantaloupe', 2 => 'banana']
*/
Обратите внимание, что при этом сохраняется исходный порядок сортировки и не будет переиндексироваться выходной массив (даже если ключи ассоциативного массива числовые).
Это была моя первая мысль. Но я бы подумал, что здесь важен порядок. Параметры могут быть переупорядочены, что приведет к другим результатам. ?x=2&y=3.
Нет, функция array_values работает очень похоже на цикл foreach и не изменяет порядок. Существует возможность непоследовательного упорядочивания из-за браузеров, фреймворков javascript и даже слоев кеширования, таких как CloudFlare. По этой причине вам действительно стоит подумать о менее хрупком растворе.
Это именно то, что я имел в виду. Я бы выбрал $array = [$_GET['x'], $_GET['y']], если вы знаете, какие параметры будут переданы. Возможно, хотя порядок здесь не важен.
Возможный дубликат: stackoverflow.com/questions/9725323/how-to-use-get