2010-05-22 3 views
1

아래 출력은 PHP json_encode에서 가져온 것입니다. 여기서 우리가 보는 것은 0849가 두 번입니다. 자바 스크립트는 sn을 사용하여 값을 얻습니다. 왜 우리는 "0"값이 필요합니까? 주요 문제는 속도 실행입니다. 내가 가진 해결책은하지 않습니다하는 경우 800킬로바이트 데이터가 4백킬로바이트php json encode

{"success":"true","total":968,"data":[{"0":"0849","sn":"0849" }] 

로 줄일 ​​수 있습니다 경우 스크립트는 그래서 필요없이 두 번 데이터 transter로 json_encode에 필터링합니다.

+1

당신은 조금 더 많은 코드를 표시 할 수 있습니다 - 즉,에 전달되는 객체를 생성하는 것을' json_encode'. – Amber

답변

4

0 항목은 배열에 0 항목이 포함되어 있기 때문입니다! mysql_fetch_array과 같은 것을 사용하여 데이터베이스에서 검색하는 것으로 추측합니다. 이 경우 간단하게 mysql_fetch_assoc (직선적 인 연관 배열을 반환)을 사용하거나 mysql_fetch_arrayMYSQL_ASSOC을 두 번째 인수로 전달하여 간단하게 변경할 수 있습니다. 다른 DB 소스를 사용하는 경우 유사한 기능이 있습니다.

데이터베이스에서 오지 않거나 다른 곳에서 숫자 키가 필요한 경우 숫자 값을 항상 필터링 할 수 있습니다. 당신이 함께 array_ * 기능을 잔뜩 모인하여이 작업을 수행 할 수 있습니다, 아니면 그냥 foreach 루프와 함께 :

foreach ($data as $k => $v) { if (is_int($k)) { unset($data[$k]); } }
+0

정확히 똑같은 별난 json 출력을 얻었습니다 ... 그래서 나는 당신의 대답이 맞다고 생각합니다! 고마워. :) –

+0

네, 고맙습니다. 고맙습니다. 두 번째 차이에도 불구하고. 나에게 중요합니다. 328.4 kb ~ 158.2 kb. 최적화할 필요성 .... – hafizan