질문/조언질답게시판
Extra Form
PHP PHP 7.2
CMS XpressEngine
,
    "gangwon": {
        "countryName": "강원",
        "0newCase": "0",
        "0totalCase": "53",
        "0recovered": "28",
        "0death": "2",
        "0percentage": "3.44",
        "0newFcase": "0",
        "0newCcase": "0"
    }

 

 

 

위 반환된 데이터의 값을 출력해야 하는데요.

{$data->gangwon->0totalCase}

 

이렇게 하면 500에러가 발생합니다. 숫자 0이 문제인 것 같은데요.

이건 어떻게 출력해야 하나요??

  • profile

    숫자로 시작하는 속성에 접근하려면 $data->gangwon->{'0totalCase'} 이렇게 해야 하는데,

    중괄호가 XE 템플릿 문법과 충돌하기 때문에 템플릿에서는 사용이 불가능합니다.

     

    처음부터 json_decode를 할 때 오브젝트가 아닌 배열을 사용하도록 설정했다면 좋았겠지만...

    그렇지 않은 상황에서는

        {@ $data->gangwon = get_object_vars($data->gangwon)}

    이렇게 배열로 변환한 후,

        {$data->gangwon['0totalcase']}

    이렇게 배열 문법을 활용하는 것이 그나마 XE 템플릿에서 쓸만한 방법입니다.

    물론 일단 배열로 변환했다면 그 다음에는 계속 배열 문법만 써야 합니다.

  • profile profile
    말씀 하신대로 해봤는데 500에러는 나지 않는데 값이 출력이 안되네요.
    외부페이지에 코드를 작성해서 외부페이지를 위젯페이지로 만들어주는 것으로 페이지를 구성했습니다.
  • profile profile

    외부페이지라면 또다른 문제가 있을지도 모르겠네요.
    {@ } 에서 사용한 변수와 { } 에서 사용한 변수가 서로 공유되지 않는 상황이 가끔 있는지라...


    우선 0으로 시작하지 않는 countryName 같은 것들부터
    원래 문법 & 배열 문법으로 썼을 때 제대로 표시되는지 차근차근 확인해 보시지요.


    PHP 7.x 사용하시니까 두 단계를 한 줄로 합쳐서
        {get_object_vars($data->gangwon)['0totalcase']}
    이렇게 써보는 방법도 있겠습니다.

  • profile profile
    응답갑에서 다른 곳은 모두 숫자가 없는데 유일하게 저 강원지역만 0이 추가로 붙어있습니다.
    다른 지역은 값이 잘 출력이 되니 처음에 말씀하신 변수가 공유되지 않는 상황은 아닌듯 합니다.

    강원 지역만 값을 출력을 하려면 500에러가 나서 난감하네요.
  • profile profile

    아, 그렇다면 API 운영자의 단순 실수일 가능성이 높습니다.
    코딩하다가 실수로 0을 집어넣은 모양이네요.
    사용자 입장에서 버그를 우회하려고 하는 것보다는 일단 강원도만 막아놓고

    API 운영자에게 고쳐달라고 요구하는 것이 더 빠를지도...

  • profile profile
    네. 일단 문의 남겨놓고 다른 지역이랑 같은 변수를 사용해서 공란으로 둬야겠습니다.
  • profile profile

    운영자분이 실수하신거고 고쳐주실 수 있으면 좋겠네요.

     

    스크린샷(137).png

     

    강원도만 일단 출력 안되지만 완성은 했네요.

  • profile profile
    합계가 정확하다면 강원도 것을 거꾸로 계산해서 넣어주는 방법도 있겠네요. ㅎㅎ
  • profile profile
    아.. 그런 편법이 ㅋ
  • profile profile
    개발자분이 방금 처리해주셔서 이제 잘나오네요 ㅋ 역시 그냥 오타였군여 ㅎㅎ
  • profile
    저는 그냥 가따 쓰는겁니다.. 저보고 뭐라...(읍)
  • profile profile

    API 받아야 쓰는거니 괜찮죠 ㅎ