webservice返回的是一个包含整数和字符串类型属性的对象数组,当结果是多个返回值的时候使用正常,当无返回值和只有一个返回值的时候提示Notice: Uninitialized string offset: 0 in C:\Apache\htdocs\commentacts.php on line 253
一类的,函数的返回结果就不正常了,webservice是正常的,下附代码function GetReplyList($rid)
{
$aResult = $this->callweb->getreplylist((int)$rid);
foreach ($aResult['GetListResult']['CInfo'] as $key)
{
$o = new CInfo();
$o->ID = (int)$key['ID'];
$o->Content = $key['Content'];
$o->ArticleID = $key['ArticleID'];
$o->UserName = $key['UserName'];
$o->IsDelete = $key['IsDelete'];
$o->ReplyID = $key['ReplyID'];
$Result[$i] = $o;
$i++;
}
return $Result;
}

解决方案 »

  1.   

    没测过
    只提示一下,供参考
    web服务是通过标准xml定义的数据类型按照xml的字串和数值等严格定义,但不同语言,在转化成xml时不同变量可能会出错,打个比方:php的字串输出时,在xml中就不是字串
    看看你web服务的数据定义,再看看两头
      

  2.   

    多谢关注
    我不太清楚该怎么形容,当返回的结果是多个的时候,$aResult['GetListResult']['CInfo'] as $key这样取数组没有问题,但是当只有一个结果的时候,这样取数据就是乱的,改成$aResult['GetListResult']来取就正常了,可是我不知道该怎么判断返回的结果的数量。
      

  3.   

    is_array($aResult['GetListResult']))
    先判断一下呢
      

  4.   

    用is_array的话可以判断返回空值,但是不能判断出来返回值是一个
      

  5.   

    错了,是用is_array判断$aResult['GetListResult']['CInfo'] 呢?
      

  6.   

    看看wsdl定义看看对参数的要求
      

  7.   

    HTTP/1.1 200 OK
    Content-Type: text/xml; charset=utf-8
    Content-Length: length<?xml version="1.0" encoding="utf-8"?>
    <soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
      <soap:Body>
        <GetListResponse xmlns="http://tempuri.org/">
          <GetListResult>
            <CInfo>
              <ID>int</ID>
              <Content>string</Content>
              <ArticleID>string</ArticleID>
              <UserName>string</UserName>
              <IsDelete>string</IsDelete>
              <ReplyID>int</ReplyID>
            </CInfo>
            <CInfo>
              <ID>int</ID>
              <Content>string</Content>
              <ArticleID>string</ArticleID>
              <UserName>string</UserName>
              <IsDelete>string</IsDelete>
              <ReplyID>int</ReplyID>
            </CInfo>
          </GetListResult>
        </GetListResponse>
      </soap:Body>
    </soap:Envelope>
      

  8.   

    webservice的这个方法的响应示例在这里了,等待解答