$data = array(
    'name' => 'John Doe',
    'age' => 30,
    'city' => 'New York'
);

$queryString = http_build_query($data);
echo $queryString;

// Output: 'name=John+Doe&age=30&city=New+York'
http_build_query(
    array|object $data,
    string $numeric_prefix = "",
    ?string $arg_separator = null,
    int $encoding_type = PHP_QUERY_RFC1738
): string
$data = array(
    1 => 'foo',
    2 => 'bar',
    3 => 'baz',
);

$queryString = http_build_query($data, 'my_');
echo $queryString;
// Output: 'my_1=foo&my_2=bar&my_3=baz'
$data = array(
    'foo' => 'bar',
    'baz' => 'boom',
    'cow' => 'milk',
);
$data = array(
    'foo' => 'bar',
    'baz' => 'boom',
    'cow' => 'milk',
);

$queryString = http_build_query($data);
echo $queryString;
// Output: 'foo=bar&baz=boom&cow=milk'
$data = array(
    'foo' => 'bar',
    'baz' => 'boom',
    'cow' => 'milk',
);

$queryString = http_build_query($data, '', '');
echo $queryString;
// Output: 'foo=barbaz=boomcow=milk'
$data = array(
    'foo' => 'bar',
    'baz' => 'boom',
    'cow' => 'milk',
);

$queryString = http_build_query($data, '', ',');
echo $queryString;
// Output: 'foo=bar,baz=boom,cow=milk'
$data = array(
    'foo' => 'bar',
    'baz' => 'boom',
    'cow' => 'milk',
);

$queryString = http_build_query($data, '', ';');
echo $queryString;
// Output: 'foo=bar;baz=boom;cow=milk'
$data = array(
    'name' => 'John Doe',
    'age' => 30,
    'city' => 'New York'
);
$data = array(
    'name' => 'John Doe',
    'age' => 30,
    'city' => 'New York'
);

$queryString = http_build_query($data, '', null, PHP_QUERY_RFC1738);
echo $queryString;

// Output: 'name=John+Doe&age=30&city=New+York'
$data = array(
    'name' => 'John Doe',
    'age' => 30,
    'city' => 'New York'
);

$queryString = http_build_query($data, '', null, PHP_QUERY_RFC3986);
echo $queryString;

// Output: 'name=John%20Doe&age=30&city=New%20York'
$params = array(
    'search_query' => 'keyword',
    'category' => 'books',
    'sort' => 'relevance'
);

$query_string = http_build_query($params);
$url = 'https://example.com/search?' . $query_string;

// The resulting $url will be:
// "https://example.com/search?search_query=keyword&category=books&sort=relevance"
$api_endpoint = 'https://api.example.com/data';
$api_key = 'your_api_key';
$params = array(
    'api_key' => $api_key,
    'action' => 'get_data',
    'format' => 'json'
);

$api_url = $api_endpoint . '?' . http_build_query($params);

// The resulting $api_url will be:
// "https://api.example.com/data?api_key=your_api_key&action=get_data&format=json"
$form_data = array(
    'username' => 'user123',
    'password' => 'secret',
    'remember' => 1
);

$action_url = 'https://example.com/login?' . http_build_query($form_data);

// Output: 'https://example.com/login?username=user123&password=secret&remember=1'
// This URL can be used as the <form> element's action attribute.
class UserProfile {
    public $id = 101;
    public $username = 'happy_coder';
    public $status = 'online';
    protected $password = 'secret'; // protected/private 속성은 제외됨
}

$user_profile_object = new UserProfile();

$query_string_object = http_build_query($user_profile_object);
echo 'https://api.example.com/profile?' . $query_string_object;

// Output: 'https://api.example.com/profile?id=101&username=happy_coder&status=online'