php 500 에러 발생 문의드립니다.
CMS/프레임워크 | XE 1.x |
---|---|
개발 언어 | PHP 7.2 |
, "gangwon": { "countryName": "강원", "0newCase": "0", "0totalCase": "53", "0recovered": "28", "0death": "2", "0percentage": "3.44", "0newFcase": "0", "0newCcase": "0" }
위 반환된 데이터의 값을 출력해야 하는데요.
{$data->gangwon->0totalCase}
이렇게 하면 500에러가 발생합니다. 숫자 0이 문제인 것 같은데요.
이건 어떻게 출력해야 하나요??
댓글 12
숫자로 시작하는 속성에 접근하려면 $data->gangwon->{'0totalCase'} 이렇게 해야 하는데,
중괄호가 XE 템플릿 문법과 충돌하기 때문에 템플릿에서는 사용이 불가능합니다.
처음부터 json_decode를 할 때 오브젝트가 아닌 배열을 사용하도록 설정했다면 좋았겠지만...
그렇지 않은 상황에서는
{@ $data->gangwon = get_object_vars($data->gangwon)}
이렇게 배열로 변환한 후,
{$data->gangwon['0totalcase']}
이렇게 배열 문법을 활용하는 것이 그나마 XE 템플릿에서 쓸만한 방법입니다.
물론 일단 배열로 변환했다면 그 다음에는 계속 배열 문법만 써야 합니다.
외부페이지에 코드를 작성해서 외부페이지를 위젯페이지로 만들어주는 것으로 페이지를 구성했습니다.
외부페이지라면 또다른 문제가 있을지도 모르겠네요.
{@ } 에서 사용한 변수와 { } 에서 사용한 변수가 서로 공유되지 않는 상황이 가끔 있는지라...
우선 0으로 시작하지 않는 countryName 같은 것들부터
원래 문법 & 배열 문법으로 썼을 때 제대로 표시되는지 차근차근 확인해 보시지요.
PHP 7.x 사용하시니까 두 단계를 한 줄로 합쳐서
{get_object_vars($data->gangwon)['0totalcase']}
이렇게 써보는 방법도 있겠습니다.
다른 지역은 값이 잘 출력이 되니 처음에 말씀하신 변수가 공유되지 않는 상황은 아닌듯 합니다.
강원 지역만 값을 출력을 하려면 500에러가 나서 난감하네요.
아, 그렇다면 API 운영자의 단순 실수일 가능성이 높습니다.
코딩하다가 실수로 0을 집어넣은 모양이네요.
사용자 입장에서 버그를 우회하려고 하는 것보다는 일단 강원도만 막아놓고
API 운영자에게 고쳐달라고 요구하는 것이 더 빠를지도...
운영자분이 실수하신거고 고쳐주실 수 있으면 좋겠네요.
강원도만 일단 출력 안되지만 완성은 했네요.
API 받아야 쓰는거니 괜찮죠 ㅎ