_http_build_query( array|object $data, string $prefix = null, string $sep = null, string $key = , bool $urlencode = true ): string

This function’s access is marked private. This means it is not intended for use by plugin or theme developers, only in other core functions. It is listed here for completeness. Use https://www.php.net/manual/en/function.http-build-query.php instead.

From php.net (modified by Mark Jaquith to behave like the native PHP5 function).

Description

See also

Parameters

$dataarray|objectrequired
An array or object of data. Converted to array.
$prefixstringoptional
Numeric index. If set, start parameter numbering with it.

Default:null

$sepstringoptional
Argument separator; defaults to 'arg_separator.output'.

Default:null

$keystringoptional
Used to prefix key name.

Default:''

$urlencodebooloptional
Whether to use urlencode() in the result.

Default:true

Return

string The query string.

Source

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 );
}

Changelog

VersionDescription
3.2.0Introduced.

User Contributed Notes

You must log in before being able to contribute a note or feedback.