// URL에서 사용할 수 있는 문자열 형식으로 인코딩할 배열
$data = array(
    'name' => 'John Doe',
    'age' => 30,
    'city' => 'New York'
);

// http_build_query() 함수를 사용하여 쿼리 문자열로 인코딩
$queryString = http_build_query($data);
echo $queryString; // 출력: name=John+Doe&age=30&city=New+York'

// parse_str() 함수를 사용하여 디코딩
// 구문 분석한 데이터를 두 번째 인자인 $decodedArray에 배열 형태로 저장
parse_str($queryString, $decodedArray);

print_r($decodedArray); // 출력:  Array ( [name] => John Doe [age] => 30 [city] => New York )
parse_str(string $string, array &$result): void
$query_string = 'name=John+Doe&age=30';

// 비권장 방법: 결과를 저장할 배열 인자를 생략
parse_str($query_string);

// $name과 $age 변수가 현재 스코프에 직접 생성됩니다.
echo '이름 (비권장 방법): ' . $name . '<br>'; // 출력: '이름 (비권장 방법): John Doe'
echo '나이 (비권장 방법): ' . $age; // 출력: '나이 (권장 방법): 30'
$query_string = 'name=John+Doe&age=30';

// 권장 방법: 결과를 $parsed_data 배열에 저장
$parsed_data = []; // 결과를 저장할 배열을 미리 선언하는 것이 좋습니다.
parse_str($query_string, $parsed_data);

// 파싱된 데이터는 $parsed_data 배열 안에 있습니다.
$name = $parsed_data['name'];
$age = $parsed_data['age'];

echo '이름 (권장 방법): ' . $name . '<br>'; // 출력: '이름 (권장 방법): John Doe'
echo '나이 (권장 방법): ' . $age; // 출력: '나이 (권장 방법): 30'