WordPress Version: 6.4
/**
* From php.net (modified by Mark Jaquith to behave like the native PHP5 function).
*
* @since 3.2.0
* @access private
*
* @see https://www.php.net/manual/en/function.http-build-query.php
*
* @param array|object $data An array or object of data. Converted to array.
* @param string $prefix Optional. Numeric index. If set, start parameter numbering with it.
* Default null.
* @param string $sep Optional. Argument separator; defaults to 'arg_separator.output'.
* Default null.
* @param string $key Optional. Used to prefix key name. Default empty string.
* @param bool $urlencode Optional. Whether to use urlencode() in the result. Default true.
* @return string The query string.
*/
function _http_build_query($data, $prefix = null, $sep = null, $key = '', $urlencode = true)
{
$ret = array();
foreach ((array) $data as $k => $v) {
if ($urlencode) {
$k = urlencode($k);
}
if (is_int($k) && null !== $prefix) {
$k = $prefix . $k;
}
if (!empty($key)) {
$k = $key . '%5B' . $k . '%5D';
}
if (null === $v) {
continue;
} elseif (false === $v) {
$v = '0';
}
if (is_array($v) || is_object($v)) {
array_push($ret, _http_build_query($v, '', $sep, $k, $urlencode));
} elseif ($urlencode) {
array_push($ret, $k . '=' . urlencode($v));
} else {
array_push($ret, $k . '=' . $v);
}
}
if (null === $sep) {
$sep = ini_get('arg_separator.output');
}
return implode($sep, $ret);
}