http_build_query без значения по параметрам - PullRequest
0 голосов
/ 21 марта 2019

Функция PHP http_build_query очень удобна для создания URL с параметрами GET.Но иногда мне нравится использовать «булевы» параметры без значения, например:

/mypage?subscription-id=42&cancel-renewal

, которые я затем проверяю простым isset.Можно ли достичь этого результата с помощью http_build_query?

РЕДАКТИРОВАТЬ: Назначение пустых значений для параметра не работает:

  • cancel-renewal => '' приводит кcancel-renewal=
  • cancel-renewal => null приводит к пропуску параметра
  • cancel-renewal => false приводит к cancel-renewal=0

Ответы [ 2 ]

1 голос
/ 21 марта 2019

Можно ли добиться этого результата с помощью http_build_query?

Нет. Внутренне http_build_query добавляет = разделитель ключ-значение независимо от значения параметра. Вы можете увидеть исходный код здесь (PHP 7.3.3)

Означает, что вы либо должны принять cancel-renewal= внешний вид параметра, либо можете изменить путь, чтобы получить что-то вроде /mypage/cancel-renewal?subscription-id=42

Третий вариант - написать собственную простую функцию для построения строки запроса.

0 голосов
/ 21 марта 2019

Используйте это;

$query = array("subscription-id" => 42, "cancel-renewal" => "");
$http_query = http_build_query($query);

Это вернет ?subscription-id=42&cancel-renewal=.И отлично работает с isset()

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...