PHP Xml-RPC数组和结构

时间:2015-04-20 07:40:11

标签: php xml-rpc

我使用XML-RPC Lib for PHP来使用在线签名。

这是官方文件:

$doc = array(
      "content" => new xmlrpcval($doc_content, "base64"),
      "name" => new xmlrpcval($doc_name, "string")
);

$language = "fr";
$signers = array(new xmlrpcval($signer, "struct"));

$request = array(
    "documents" => new xmlrpcval(array(new xmlrpcval($doc, "struct")), "array"),
    ...  

但现在我想在请求中放入几个文件。这是我的代码:     $ docs = array();

foreach ($documents as $document)
{
    // Signature field
    $field = array(
        'page'  => new xmlrpcval($document->page, 'int'),
        'x'     => new xmlrpcval($document->x, 'int'),
        'y'     => new xmlrpcval($document->y, 'int'),
        'label' => new xmlrpcval($document->nom, 'string'),
    );        

    // Document
    $docs []= new xmlrpcval(array(
        'content'   => new xmlrpcval($document->content, 'base64'),
        'name'      => new xmlrpcval($document->nom, 'string'),
        'signatureFields'   => new xmlrpcval($field, 'array'),
    ),'struct');
}

$request = array(
    'documents'     => new xmlrpcval($docs, 'array'),

我发现了这个错误:

  

消息:在非对象上调用成员函数serialize()

有人已经使用过此库吗?因为我现在迷路了..

2 个答案:

答案 0 :(得分:0)

我已经意识到,即使我们有一个数组仍然使用phpxmlrpc库,我们需要单独定义数组,所以如果必须在这里传递一个数组,那么可以做什么,< / p>

    $listids // this was my one dimensional array
    $subs_list_array = array(); 
       foreach ($listids as $id) {
         $subs_list_array[] = new xmlrpcval($id, "int");
    }

    $msg = new xmlrpcmsg(
            "contact.subscribe", array(
              //Set user id
              new xmlrpcval($registration_id, "int"),
              new xmlrpcval($subs_list_array, "array")// <- Now I am able to use the array
            )
    );

答案 1 :(得分:0)

对于php数组的递归编码,你也可以使用递归转换任意深度数据结构的php_xmlrpc_encode函数