PHP의 json_encode 함수는 PHP 변수를 JSON 형식 문자열로 변환합니다. 가장 일반적인 방법은 PHP의 배열을 JSON 형식의 문자열로 변환하는 것입니다. 그러나 어떤 경우에는 json_encode 함수가 배열을 변환하지 않기를 원할 수도 있습니다. 이번 글에서는 이 목표를 달성하는 방법을 살펴보겠습니다.
먼저 json_encode 함수가 기본적으로 배열을 변환하는 방법을 살펴보겠습니다. 다음과 같은 PHP 배열이 있다고 가정합니다.
$array = array( "name" => "John", "age" => 30, "hobbies" => array("reading", "swimming", "traveling") );
이 배열을 json_encode 함수에 전달하면 함수는 다음 JSON 형식의 문자열을 반환합니다.
{ "name": "John", "age": 30, "hobbies": ["reading", "swimming", "traveling"] }
보시다시피 함수는 "hobbies"의 값을 변경했습니다. PHP의 키 하위 배열은 JSON 배열로 변환됩니다. 이는 PHP 데이터를 계층별로 JSON 형식으로 재귀적으로 변환하는 방법을 제공하므로 대부분의 경우에 유용합니다.
그러나 어떤 경우에는 json_encode 함수가 배열을 변환하지 않고 원래 PHP 배열로 유지하기를 원합니다. 이를 달성하는 방법이 있는데, 그것은 배열에 특별한 자리 표시자를 사용하는 것입니다.
배열의 각 하위 배열을 자리 표시자로 바꾼 다음 json_encode 함수의 콜백 함수를 사용하여 이러한 자리 표시자를 다시 일반 하위 배열로 바꿀 수 있습니다. 예는 다음과 같습니다.
$array = array( "name" => "John", "age" => 30, "hobbies" => "[[subarray]]" ); function replaceSubarrays($data) { if(is_array($data)) { if(in_array("[[subarray]]", $data)) { $data = array_map("replaceSubarrays", $data); } } elseif ($data == "[[subarray]]") { $data = array(); } return $data; } $json = json_encode(array_map("replaceSubarrays", $array)); echo $json;
이 예에서는 "hobbies" 키의 값을 값이 하위 배열임을 나타내는 특수 자리 표시자인 "[[subarray]]"로 바꿉니다. 또한 이 자리 표시자를 처리하기 위해 콜백 함수인 replacementSubarrays를 정의합니다. 모든 배열 요소를 반복적으로 반복하고 자리 표시자가 포함된 모든 하위 배열을 찾아 빈 배열로 바꿉니다. 그런 다음 json_encode 함수와 array_map 함수를 사용하여 전체 배열을 콜백 함수에 전달하고 하위 배열을 교체합니다.
이 예제를 실행하면 다음 문자열이 JSON 형식으로 표시됩니다.
{ "name": "John", "age": 30, "hobbies": "[[subarray]]" }
예상한 대로 "hobbies" 키의 값은 JSON 배열로 변환되지 않고 "[[subarray] ]"로 유지됩니다. 끈.
자리 표시자를 사용하는 이 접근 방식에는 몇 가지 추가 작업이 필요하지만 json_encode 함수가 원래 PHP 배열을 유지하여 더 높은 수준의 방식으로 데이터를 처리할 수 있습니다.
위 내용은 변환 없이 PHP json_encode 배열을 얻는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!