PHP 백엔드와 클라이언트 데이터 간의 상호 작용 중에 JSON 데이터는 때로는 불규칙한 형식을 가지며 때로는 배열, 때로는 개체이므로 클라이언트 개발자는 곧 무너질 것 같은 느낌을 받습니다.
따라서 프론트엔드, 백엔드 관련 담당자가 PHP의 json_encode 함수 원리를 반드시 이해하는 것이 가장 중요한 단계입니다.
PHP의 배열은 필요한 시나리오에 따라 구조를 설명하기 위해 많은 제한적인 데이터 유형을 정의하는 다른 언어와 달리 PHP 프로그래머가 클라이언트에게 반환되는 내용을 명확하게 설명하기 어렵습니다. 데이터의 구조는 무엇입니까?
배열 데이터는 당연히 PHP를 통해 json으로 인코딩되는데 출력값이 배열일 때도 있고, 객체일 때도 있는 상황이 됩니다.
<?php /* 如果你想生成一个json格式的数组格式(Vector)而非对象格式(Map)的,那么数据的下标: 必须是数字索引, 必须从0开始, 必须从小到大依次增加、中间不可以跳跃、顺序不可变动. */ //符合数组 $vector = [ 12, 23, 18 ]; echo json_encode($vector); //符合数组 $vector2 = [ 0 => 12, 1 => 23, 2 => 18 ]; echo json_encode($vector2); //不符合数组,下标有跳跃 $map = [ 0 => 12, 1 => 23, 2 => 18, 4 => 20 ]; echo json_encode($map); //不符合数组,下标顺序不对 $map = [ 0 => 12, 1 => 23, 3 => 18, 2 => 20 ]; echo json_encode($map); //不符合数组,下标没有从0开始 $map_1 = [ 1 => '111', 2 => 'asdfa' ]; echo json_encode($map_1); //典型的对象格式 $map_2 = ['abc' => 1, 'de' => 2, 'fi' => null]; echo json_encode($map_2); /** * 请注意上面的变量命名,对应于Hack中的概念,Vector和Map为两种数据集合类型 * 如果你需要将"索引数组"强制转化成"对象",可以这样写 * json_encode((object) $a); * 或 * json_encode ($a, JSON_FORCE_OBJECT); * */
해결책은 무엇인가요?
PHP를 통해 Vector와 Map의 두 가지 데이터 구조를 캡슐화하는 클래스입니다. json 출력 구조를 구성할 때 구조의 확실성을 보장하기 위해 이 두 가지 유형을 캡슐화 및 변환에 사용합니다.
위 내용은 편집자가 소개한 PHP JSON 배열 및 객체입니다. 궁금한 점이 있으시면 메시지를 남겨주시면 편집자가 시간에 맞춰 답변해 드리겠습니다. 또한 Script House 웹사이트를 지원해 주시는 모든 분들께 감사의 말씀을 전하고 싶습니다!