json_encode는 희소 배열을 JSON 객체로 인코딩
JSON으로 인코딩된 희소 배열(예: 누락된 인덱스가 있는 배열)의 경우 PHP의 json_encode 함수는 다음을 나타냅니다. 예기치 않은 동작으로 인해 배열이 배열 대신 JSON 개체로 변환됩니다. 이 동작을 이해하기 위해 예를 살펴보겠습니다.
$a = array( new stdClass, new stdClass, new stdClass ); $a[0]->abc = '123'; $a[1]->jkl = '234'; $a[2]->nmo = '567'; printf("%s\n", json_encode($a)); unset($a[1]); printf("%s\n", json_encode($a));
출력:
[{ "abc": "123" },{ "jkl": "234" },{ "nmo": "567" }] { "0": { "abc": "123" }, "2": { "nmo": "567" } }
초기 인코딩에서 json_encode는 희소 배열이 객체로 유효하므로 객체 배열을 생성합니다. . 그러나 설정되지 않은 인덱스(1)를 제거한 후에는 결과 배열에 구멍이 있기 때문에 배열로 인코딩할 수 없습니다.
이 문제를 해결하고 배열이 배열로 인코딩된 상태를 유지하도록 하려면 array_values를 사용하세요. ($a) 인코딩 전:
printf("%s\n", json_encode(array_values($a)));
[{ "abc": "123" },{ "nmo": "567" }]
array_values로 배열을 다시 인덱싱하면 공백이 제거되어 json_encode가 유효한 JSON 배열을 성공적으로 생성했습니다.
위 내용은 PHP의 `json_encode`가 희소 배열을 JSON 개체로 변환하는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!