2013-06-28 5 views
0

WHM/cPanel의 API를 사용하여 PHP를 통해 사용자 계정을 만듭니다. 모든 cURL 옵션을 올바른 URL 문자열을 서버에 보내고 계정이 적절하게 만들어져 모든면이 올바르게 작동하도록했습니다.WHP cPanel JSON/PHP API 인쇄 배열 키 문제

지금해야 할 일은 모든 데이터를 화면에 표시하는 대신 모든 메시지를 볼 필요가없는 일반 사용자가 사용하기 위해 적절한 응답 메시지를 출력하는 것입니다. 네임 서버, DNS 등의 정보를 백그라운드에서 처리합니다.

JSON 결과의 출력 배열에 statusmsg 키가 있지만 인쇄 방법이 확실하지 않습니다.

는 오류와 함께 결과입니다

$result = json_decode($curl_response, true); 

(A 위해서 var_dump에서)

object(stdClass)#1 (1) { 
    ["result"]=> array(1) { 
     [0]=> object(stdClass)#2 (4) { 
      ["options"]=> NULL 
      ["rawout"]=> NULL 
      ["statusmsg"]=> string(55) "Sorry, a passwd entry for that username already exists." 
      ["status"]=> int(0) 
     } 
    } 
} 

내가 echo $result->result->statusmsg;을 시도했지만 그냥 빈 페이지와 함께 제공됩니다, 그래서 내가 뭘 잘못하고 있는지 또는 상태 메시지에 액세스 할 수있는 또 다른 방법이 있다면 사용자에게 친숙한 방식으로 인쇄 할 수 있습니다.

도움이 될 것입니다!

답변

0

나는 내가 지금 나 자신과 이야기하고 있다는 것을 깨닫는다. 그러나 나는 그것을 알아 냈다. 다른 사람들이이 주제를 찾을 수 있도록 게시하고 있습니다 :

결과는 다차원 배열이므로 모든 배열을 통해 원하는 키 (이 경우에는 상태 메시지)를 가져와야합니다.

배열에서 배열 키 statusmsg를 효율적으로 활용하려면 다음이 1 바와 같이, $result[result][0]['statusmsg']

을 그런 다음 또한 status 키를 확인 이상의 오류를 수행 할 수 있습니다

Array ([result] => Array (
     [0] => Array (
      [statusmsg] => Sorry, that username (testingw) is reserved. 
      [status] => 0 
      [rawout] => 
      [options] => 
     ) 
    ) 
) 

당신은 밖으로 에코 필요 합격 또는 불합격의 경우 각각 0입니다.

는 * (마이크에 감사 json_decode 배열 플래그 바른 길에 저를 얻기 위해. 이상) 난 그냥`$의 curl_response`, 나는 아직도 할 수있는 훨씬 덜 복잡하게 보이는 메아리 당신이 말한 것을 시도하고, *

1

json_decode는 Array 출력과 Object 출력의 두 가지 방식으로 작동합니다. 끝 부분에 ,true);을 추가하면 배열 출력을 활성화하여이를 사용할 수 있습니다. 당신은 단지 $result = json_decode($curl_response); 사용한 경우

$result['result']['statusmsg'] 

는 다음 객체가 될 것입니다 그리고 당신은 내가 또한 그 구조가 많이 쉽게 볼 수 있도록하는 것이 echo $curl_response;와 JSON을 출력하는 것이 좋습니다

$result->result->statusmsg 

를 사용하여 액세스 할 수 있습니다. 브라우저가 가장 좋아하지 않는 경우 Chrome 용 JSONView와 같은 것을 설치하십시오.

UPDATE : 결과는 다음과 같은 각각의 상태 메시지가 무엇인가 성취 할 것이다 얻을 결과를 통해 루프 필요 객체의 배열이

사실로 인해 그

foreach($result->result as $key=>$value) { 
    echo $value->statusmsg; 
} 

또는 당신이 사용할 수있는 배열 출력을 위해

foreach($result['result'] as $key=>$value) { 
    echo $value['statusmsg']; 
} 
+0

statusmsg를 표시하지 않습니다. 이제 출력 : '{ "result": [{ "statusmsg": "죄송합니다, 해당 사용자 이름의 passwd 항목이 이미 있습니다.", "status": 0, "options": null, "rawout" [echo $ curl_response-> result-> statusmsg;'여전히 빈 화면을 얻었고'echo $ curl_response [ 'result'] [ 'statusmsg'];' ** 치명적 오류 : 39 행의 /path/to/site/auto_account.php에 문자열 오프셋을 사용할 수 없습니다 ** – MrLewk

+0

또는 'true' 플래그가 설정된 경우 다음과 같이 보입니다 : ([status] => 0 [rawout] => [options] =>)) 사용자 이름 (testingw)은 예약되어 있습니다.)' 거기에 3 개의 배열이 있습니까? 데이터를 가져 오는 방법을 이해할 수 없습니다. – MrLewk

+1

다른 옵션으로 답변이 업데이트되었습니다. – Mike