PHP

2011-09-19 3 views
0

안녕하세요 난 뒤에 쉼표를 가지고하는 JSON 문자열PHP

 
//prepare a JSON Array [ obj1,obj2,obj3.... ] 

echo "["; 

foreach ($usernames as $value){ 
    //prepare a JSON String for $username 
    //e.g. {"username":$value} 

    // insert comma if there is next element in the array 
    echo ","; 
} 

echo "]"; 

내 문제를 준비하기 위해 루프를 사용하고는 JSON의 잘못된 형식입니다. 어떻게 for 루프가 배열의 끝에 도달했는지, 마지막 요소를 준비했는지, 그래서 마지막 쉼표 문자를 제외한 모든 것을 추가하는 것을 멈추는 지 어떻게 알 수 있습니까?

감사합니다

+2

[json_encode()] (http://php.net/manual/en/function.json-encode.php)에 대해 알고 계셨습니까? –

+1

어레이를 만들고 json 문자열을 수동으로 생성하는 대신'json_encode()'를 통해 전송하십시오. – evan

+0

나는 그것을 인식하고 있지만 어쨌든 나는 completly 그것을 잊어 버렸다. 오 .... 더 적절한 방법으로 함수를 구현하도록 상기시켜 주신데 대해 감사드립니다. – Gapton

답변

5

는이 작업을 수행 할 수 json_encode를 사용하지 않는 이유가 있나요? json_encode을 사용하여 하나의 빠른 호출로 일반 PHP 배열을 JSON으로 변환 할 수 있습니다.

$arr = ("a"=>"one", "b"=>"two"); 

echo $json_encode($arr); 

http://php.net/manual/en/function.json-encode.php

+0

DB에서 데이터를 검색하고 있었기 때문에 문자열 조작이라는 사고 방식에 갇혀있었습니다. 제안한대로 필자는 연관 배열을 객체로 만들고 배열에이 객체를 저장하도록 구현했습니다. 그런 다음 json_encode를 호출하여 해당 배열을 인코딩합니다. 코드는 깨끗하고 깔끔합니다. 감사합니다. – Gapton

+0

그래. 나는 당신이 다른 목적으로 JSON을 직접 만들었다 고 생각했다. :) – Trevor

1

글쎄, 당신은 그것을 완료 후 후, 변수에 모두를 저장할 수 당신 다만 수 :

$jsonVar = substr($jsonVar, 0, -1); 

마지막을 추가하기 전에 "]"

+2

나는 trevor의 대답을 더 좋아한다. :) –

+1

그리고 사용자가 0 명인 경우 어떻게해야합니까? – Dani

+0

다음에'echo $ json_encode ((object) $ arr);를 실행합니다. – awm

3

for를 사용해야 할 경우 쉼표 인쇄를 처음으로 변경하십시오. 첫 번째 반복이 아닌 경우에만 인쇄하십시오.

echo "["; 
ob_start(); 
foreach ($usernames as $value){ 
    //prepare a JSON String for $username 
    //e.g. {"username":$value} 

    // insert comma if there is next element in the array 
    echo ","; 
} 
$data = ob_get_contents(); 
ob_end_clean() ; 
echo rtrim($data,','); 
echo "]" 

하지만 올바른/표준/쉬운 방법이 문제에 대한 특정

0

솔루션은 단순히로 json_encode ($ 사용자 이름)을하는 것입니다;