Как преобразовать именованные параметры PHP $ _GET в массив с числовым индексом?

У меня есть URL-адрес веб-сайта, подобный следующему:

www.localhost.com/page?x=1&y=2

Теперь я хочу получить все параметры GET в массиве, как показано ниже:

$array[0] = 1;
$array[1] = 2;

Спасибо.

Возможный дубликат: stackoverflow.com/questions/9725323/how-to-use-get

Second2None 07.01.2019 14:50

взгляните на: shodor.org/~kevink/phpTutorial/nileshc_getreqpost.php

Feelsbadman 07.01.2019 14:54
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
2
2
55
4
Перейти к ответу Данный вопрос помечен как решенный

Ответы 4

Ответ принят как подходящий

Вы можете использовать глобальную переменную $ _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?

Nico Haase 07.01.2019 16:10

Это просто копия ссылок в $_GET в $array с теми же индексами.

Al.G. 07.01.2019 17:18

Есть ли разница между вышеперечисленным и $array = $_GET? Этот массив также не имеет числового индекса.

Progrock 07.01.2019 19:59

Вы также можете использовать встроенную функцию 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.

Progrock 07.01.2019 20:02

Нет, функция array_values работает очень похоже на цикл foreach и не изменяет порядок. Существует возможность непоследовательного упорядочивания из-за браузеров, фреймворков javascript и даже слоев кеширования, таких как CloudFlare. По этой причине вам действительно стоит подумать о менее хрупком растворе.

Jeremy Harris 07.01.2019 20:12

Это именно то, что я имел в виду. Я бы выбрал $array = [$_GET['x'], $_GET['y']], если вы знаете, какие параметры будут переданы. Возможно, хотя порядок здесь не важен.

Progrock 07.01.2019 20:29

Другие вопросы по теме