Статьи

PHP: получить $ _GET как строку с помощью http_build_query ()

PHP действительно полон функций для всего! В большинстве случаев, когда вы пытаетесь что-то сделать со строками, есть функция, которая может сделать это лучше и быстрее.

Путь от $ _GET до строки

Глобальные массивы в PHP содержат параметры запроса. Либо ПОЛУЧИТЬ или ПОСТ . Как вы знаете, если адрес страницы что-то вроде:

http://www.example.com/index.php?a=b&key=value

Это означает, что вы передаете в файл index.php два параметра — «a» и «key» со своими значениями: «b» и «value». Теперь в этом случае вы можете сбросить глобальный массив $ _GET где-нибудь в index.php, и вы получите что-то вроде этого.

array(
"a" => "b",
"key" => "value",
);

Тем не менее, это псевдокод, но на самом деле $ _GET будет очень похож на этот образец массива.

$ _GET to String

Очень часто, когда разработчику необходимо обработать массив $ _GET в строку, что означает повторное генерирование строки запроса из $ _GET, он часто приходит к какой-то операции, подобной этой.

$queryString = '';
foreach ($_GET as $key => $value) {
$queryString .= $key . '=' . $value . '&';
}

Однако это приведет к чему-то довольно уродливому, например, a = b & key = value &, которое идет с завершающим символом & в конце строки.

Однако существует другой подход — использование массива.

$queryString = array();
foreach ($_GET as $key => $value) {
$queryString[] = $key . '=' . $value;
}
$queryString = implode('&', $queryString);

Но это вызывает еще одну функцию, и это все еще не самое элегантное решение. Как я уже сказал, в начале PHP полон полезных функций, и вот идет http_build_query .

http_build_query

Это именно то, что вам нужно. Как следует из названия, вы можете построить строку запроса, даже используя отличающийся от & разделитель.

$queryString = http_build_query($_GET, '', '|');

Таким образом, $ queryString будет содержать значение a = b | key =, и по крайней мере код будет выглядеть более аккуратно.