테스트 사이트 - 개발 중인 베타 버전입니다

api json 통신중 당최 이해할수 없는 상황이... 왜 0이 뜨는지... 채택완료

아츠키 1년 전 조회 2,077

</p>

<p><?php

header('Content-Type: application/json; charset=UTF-8'); 

include_once ('./_common.php');

$point= $member['mb_point'];



$data = array(

    "status" => "OK",

    "balance" =>$point, 

    "bonus" =>0, 

    "uuid" =>$uuid

);

$jsonData = json_encode($data, JSON_NUMERIC_CHECK | JSON_PRETTY_PRINT);</p>

<p>

 

이렇게 코딩이 되어 있는데 결과값이

{ "status": "OK", "point": 0, "bonus": 0, "uuid": "asdasdasdwa" }

이렇게 뜹니다..

포인트는 분명히 9350이 있고 echo 찍어봐도 9350인데..

 

그런데 또 희안한거닌

$point= 1111;

이렇게 임의로 입력을 하면

{ "status": "OK", "point": 1111, "bonus": 0, "uuid": "asdasdasdwa" }

정상적으로 나오구요..

 

회원 포인트를 가져와야 하는데 json값이 0으로 떠요..ㅠㅠ 미치고 환장하것네요 ㅠㅠ

댓글을 작성하려면 로그인이 필요합니다.

답변 5개

채택된 답변
+20 포인트

데이타변수를 디버깅하면 뭘로 나와요? 

배열 문제이거나 제이슨 출력할때 옵션문제이거나 둘중에 하난데 결과값부터 확인해서 알려주세요

로그인 후 평가할 수 있습니다

답변에 대한 댓글 5개

아츠키
1년 전
변수는 모두 정상입니다..
배열도 문제 없어보이고
제이슨 출력할때 옵션이 뭐가 있을까요? JSON_NUMERIC_CHECK 외에 다른게 있을지...
리오닥터
1년 전
JSON_UNESCAPED_UNICODE 로 바꾸세요 저거 JSON_NUMERIC_CHECK 정수형만 나와서요
아츠키
1년 전
답변주셔서 감사합니다...
JSON_UNESCAPED_UNICODE로 해도 똑같네요..ㅠㅠ
아츠키
1년 전
골때리는거는....
echo 찍으면 나와요..

api 테스트 하는 사이트에서도 어디는 숫자 제대로 뜨고 어디는 0으로 나오고
리오닥터
1년 전
그럼 뭔가 $member 배열에서 겹친거 아닌가요?

댓글을 작성하려면 로그인이 필요합니다.

1년 전

로그인 처리가 제대로 안되어서 $member 가 없는 경우로 보여집니다.

$member = get_member("admin")

한후에 출력해보시면 정상일겁니다.

 

결국 session 의 ss_mb_id 가 비정상이거나, 로그인 안한상태로 저 페이지를 호출한것입니다.

 

문제가 생겼을때, 본인이 만든 코드부터 의심을 하시는게 좋습니다. 

"뭔가 내가 알지 못하는 부분 때문일거야. " 라는 생각으로 접근하면, 해결하는데 시간이 많이 걸리게 됩니다.

코드도 몇줄 안되고, 분명 정상 동작해야 하는데, 비정상으로 동작하는것입니다.

 

사실 이것은 비정상이 아니라 정상 동작일수 있습니다. 

</p>

<pre>
<code><?php
header('Content-Type: application/json; charset=UTF-8'); 
include_once ('./_common.php');
ini_set('display_errors', 1); //오류 출력
$point= $member['mb_point'];
$data = array(
    "status" => "OK",
    "balance" =>$point, 
    "mb_level" => intVal($member['mb_level']),
    "mb_id" => trim($member['mb_id']),
    "bonus" =>0, 
    "uuid" =>$uuid
);
$jsonData = json_encode($data, JSON_NUMERIC_CHECK | JSON_PRETTY_PRINT);</code></pre>

<p><code>

 

 

 

 

로그인 후 평가할 수 있습니다

댓글을 작성하려면 로그인이 필요합니다.

1년 전

$point = (int)$member['mb_point'] 로 한번 테스트 해보시는 게 좋을 듯 합니다.

로그인 후 평가할 수 있습니다

댓글을 작성하려면 로그인이 필요합니다.

1년 전

같은건데 api 테스트하는 두사이트에서 봤는데

왼쪽꺼는 0으로 나오고 오른쪽은 정상출력되고...

api 상대 서버에서도 0으로 나온다 하고..

 

로그인 후 평가할 수 있습니다

댓글을 작성하려면 로그인이 필요합니다.

세크티
1년 전

로그인된 회원 기준으로 배열만드는게 맞나요?

로그인 후 평가할 수 있습니다

답변에 대한 댓글 3개

아츠키
1년 전
네 맞습니다...
print_r 찍어봐도 정상출력됩니다. ㅠㅠ
세크티
1년 전
$data = array(
"status" => "OK",
"point" =>(int)$point,
"bonus" =>0,
"uuid" =>$uuid
);
이렇게하면요?
아츠키
1년 전
진짜 돌겠어요...왜 이러는지..

int intval 뭐 다 해봤는데 똑같습니다 .ㅠㅠ

댓글을 작성하려면 로그인이 필요합니다.

답변을 작성하려면 로그인이 필요합니다.

로그인