2011-12-26 2 views
0

오늘 달성 할 수 있었던 몇 가지 혁신적인 방법으로 내 질문을 업데이트합니다. 나는 get_object_vars를 사용했다. 이 코드는 반복 할 값을 인쇄 할 수있었습니다. PHP에서 배열로 반환 된 웹 서비스를 구문 분석하는 방법

  $fileStatus = $ServicesLink->GetFileStatus(array('Ticket'=>$ticket,'ProjectID'=>$pidobtained,'SourceLanguageID'=> "", 'TargetLanguageID'=> "",'FileID'=> "",'Filename'=>"")); 
      $arrayPid = array(); 

      foreach($fileStatus->GetFileStatusResult->FileStatuses->FileStatus as $fileStatusObtained) 
      { 
       $arrayPid = get_object_vars($fileStatusObtained); 
       //$arrayPid =$fileStatusObtained ; 
      } 

      echo is_array($arrayPid) ? 'Array' : 'not an Array'; 
      echo "<br>"; 

      echo("Count of array ".count($arrayPid)); 
      echo "<br>"; 
      print_r('<pre>'. print_r($arrayPid) .'</pre>'); 

http://www.image-share.com/ijpg-1163-165.html

내가 그 결과로 본 것입니다.

이제이 객체에는 FileID, FileName 등 필요한 값과 함께 객체가 있기 때문에 오류 메시지가 표시되지만 출력을 볼 수 있습니다. 내가 사용하는 코드는 내가 다음과 같은 출력 http://www.image-share.com/ijpg-1163-166.html을 본이의 결과로

$fileStatus = $ServicesLink->GetFileStatus(array('Ticket'=>$ticket,'ProjectID'=>$pidobtained,'SourceLanguageID'=> "", 'TargetLanguageID'=> "",'FileID'=> "",'Filename'=>"")); 
      $arrayPid = array(); 

      foreach($fileStatus->GetFileStatusResult->FileStatuses->FileStatus as $fileStatusObtained) 
      { 
       $arrayPid = get_object_vars($fileStatusObtained); 
       //$arrayPid =$fileStatusObtained ; 
      } 

      echo is_array($arrayPid) ? 'Array' : 'not an Array'; 
      echo "<br>"; 

      echo("Count of array ".count($arrayPid)); 
      echo "<br>"; 
      //print_r('<pre>'. print_r($arrayPid) .'</pre>'); 


      foreach($arrayPid as $val) { 
       echo ($val); 
       echo "<br>"; 
      } 


     } 

(위에서 그냥 아주 작은 변화가. 나는 foreach 문을 사용)이었다. 인덱스 번호 1이 개체를 차지하므로 문자열 변환시 오류가 발생합니다. 위의 코드에서 foreach 대신 For 루프를 사용하면 값을 인쇄 할 수 없습니다. 시도 :

  for($i=0;$i<(count($arrayPid));$i+=1) 
      { 
       echo($arrayPid[$i]); 
      } 

하지만 아무 것도 인쇄하지 않습니다.

어느 누구도 그 방법을 도와 줄 수 없으므로 배열 $ arrayPid 내의 값을 반복 할 수 있습니다.

의견, 전망, 의문점을 갖고 싶습니다. 나는 imageshare를 사용하고있어 유감 스럽지만 내 스크린을 공유 할 수있는 유일한 방법입니다.

감사 앤지

+0

코드의 너무 많은! – emaillenin

+0

비누 요청을하기 위해 어떤 도서관을 이용하고 있습니까? – hakre

+0

저는 Soap 라이브러리를 사용하지 않습니다. 나는 그 URL을 사용하여 전화한다. 이 코드는 작동합니다. GetSourceLanguages에 대한 결과는 결과를 제공합니다. 내 쿼리는 배열 $ fileStatus에 대한 값을 추출하는 방법에 대해 더 자세히 설명합니다. ** GetSourceLanguagesResult-> 언어 -> Language in $ language ** while ** GetFileStatusResult-> FileStatuses-> FileStatus as $ fileStatusObtained ** 하지 않습니다. 웹 서비스의 xml 태그가 제대로 구문 분석되는지 확인하려고합니다. @ metillenin 지금 내 쿼리가 조금 더 명확 해지기를 바랍니다. 감사 –

답변

0

사용하는 올바른 방법은 다음과 같습니다

 foreach($fileStatus->GetFileStatusResult->FileStatuses->FileStatus as $fileStatusObtained) 
      { 
       $arrayPid = get_object_vars($fileStatusObtained); 
       //print_r($fileStatusObtained->FileID);     
       $fileId [] = $fileStatusObtained->FileID; 
               ... 
               } 
관련 문제