추천: "PHP Video Tutorial"
최근 직장에서 이런 문제가 자주 발생해서 기록해두겠습니다~
여기서 설명하고 싶은데 json_encode 이후에는 결과가 모두 문자열인데 결과는 제가 여기서 얘기하는 것이 프론트엔드로 변환한 결과입니다. 최근 인터페이스 데이터를 많이 작성하다보니 PHP로만 보면 이런 문제가 자주 발생합니다.
문제: 배열을 json으로 변환합니다. 때로는 객체로, 때로는 배열로 변환합니까?
사례 1:
$arr = [1,2,3];//数组下标从0开始的 echo json_encode($arr); //[1,2,3] $arr = [1=>1,2=>2,3=>3];//数组下标不是从0开始 echo json_encode($arr);//{"1":1,"2":2,"3":3}
이때 배열을 반환해야 한다면 이렇게 처리하면 됩니다.
$arr = [1=>1,2=>2,3=>3]; echo json_encode(array_values($arr));//[1,2,3]
사례 2:
$arr = []; $arr[0] = 'xxx'; $arr[1] = 'yyy'; echo json_encode($arr);//["xxx","yyy"] $arr = []; $arr[1] = 'yyy'; $arr[0] = 'xxx'; echo json_encode($arr);//{"1":"yyy","0":"xxx"}
과제의 첨자가 다음과 같은 것을 볼 수 있습니다. 똑같고 실행 순서만 바뀌어서 결과가 달라졌네요
다음은 친구가 말한 해결 방법입니다
$arr = []; $arr[1] = 'yyy'; $arr[0] = 'xxx'; $arr = array_values($arr); echo json_encode($arr);//["yyy","xxx"]
결과에 문제가 있는 것을 알 수 있습니다. yyy의 원래 인덱스는 1이고, 결과는 0
우리가 원하는 결과 [ "xxx","yyy"]
여기에 해결책이 있습니다
$arr = []; $arr[1] = 'yyy'; $arr[0] = 'xxx'; ksort($arr); echo json_encode($arr);//["xxx","yyy"]
사례 3:
$arr = []; $arr[0] = 'yyy'; $arr[2] = 'xxx'; print_r($arr); echo json_encode($arr); /*Array ( [0] => yyy [2] => xxx ) {"0":"yyy","2":"xxx"} */
사례 4:
$arr = []; echo json_encode($arr);//[]
요약:
배열을 json으로 변환할 때 인덱스가 0부터 순서대로 0, 1, 2, ...가 아닌 경우 반환되는 json 구조는 객체입니다. 배열을 반환하려면 인덱스를 엄격히 요구해야 합니다. 0부터 순서대로 시작하며 중간에 깨진 숫자가 있으면 안 됩니다.
위 내용은 배열을 json으로 변환한 후의 결과는 배열입니까 아니면 객체입니까? (여행 기록)의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!