如何在PHP中将Web服务返回的响应解析为数组

时间:2011-12-26 16:24:57

标签: php arrays web-services drupal-6

我正在通过我今天能够取得的一些突破来更新我的问题。我用了get_object_vars。 这段代码能够打印出我想要迭代的值。

         $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就是我所看到的结果。

现在,因为这个Object里面有对象以及我需要的值,即FileID,FileName等。我看到了错误信息,但却看到了输出。我使用的代码是这个(仅仅是上面的一个非常小的变化。我使用了foreach)

  $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>";
            } 


        }

因此我看到了以下输出http://www.image-share.com/ijpg-1163-166.html。 索引号1占用对象,因此占用字符串转换的错误。 如果我在上面的代码中使用For循环而不是foreach,我无法打印值。 我试过了:

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

但这不会打印任何内容。

任何人都可以通过某种方式帮助我,以便我可以迭代并在数组$ arrayPid中包含值。

希望对您提出建议,意见和疑问。 对不起,我正在使用imageshare,但这是我可以分享我的屏幕的唯一方式。

由于 安琪

1 个答案:

答案 0 :(得分:0)

使用它的正确方法是:

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