【问题标题】:Formatting a xmlrpcmsg array格式化 xmlrpcmsg 数组
【发布时间】:2014-10-07 16:41:00
【问题描述】:

我有以下数组

  Array ( [value] => Array ( [mf_account] => xxxxx [mf_username] => xxxx [mf_password] => xxxx [as_user_id-int] => e [page-int] => d [page_size-int] => x [get_campaign] => Submit [form_build_id] => form-w1vXG5j2hEeKjKYGomZjuwxWlXqbrGg5tG4ph81J3Xk [form_token] => 9onu89rRyvEWWVtSJpAUw4Ko81sitmo9BpbqtoVD110 [form_id] => messagefocus_settings_all_campaign ) )

我需要对这个数组进行格式化,使其适合 xmlrpc_client

如果我像下面这样对数组进行硬编码,它可以工作

 $msg = new xmlrpcmsg(
  "campaign.all",
  array(
    new xmlrpcval(
      array(
        "as_user_id"=> new xmlrpcval('122', "int"),
        "page"=> new xmlrpcval('33', "int"),
        "page_size"=> new xmlrpcval('23', "int"),
      ),"struct"
    )
  )
);

不幸的是,我有太多的表单来硬编码所有它们的处理程序,所以我真的很想有一个函数可以循环遍历尚未格式化的数组并根据需要解析值。

到目前为止,我已经尝试过这个,但我只是得到了错误。

  //Please ignore all parts of the if statement except the final else
  $temp = new xmlrpcmsg();
  foreach ($data as $key => $value) {
    if($key == 'get_campaign'){
      break;
    }elseif ($key == 'mf_account' || $key == 'mf_username' || $key == 'mf_password') {
      $credentials[$key] = $value; 
    }else{
      //this is where my problems occurs
      $keyValues = split('-', $key);
      $temp[$keyValues[0]] => new xmlrpcval($value, $keyValues[1]);
    }
  }

对我来说,调试变得更加尴尬,因为我必须在 drupal 中开发它,并且表单是通过 ajax 处理的,这意味着我得到的唯一错误是

  An AJAX HTTP error occurred.
  HTTP Result Code: 500
  Debugging information follows.
  Path: /system/ajax
  StatusText: Internal Server Error
  ResponseText: 

【问题讨论】:

    标签: php arrays xml-rpc


    【解决方案1】:

    通过删除 $temp 的第一个声明,错误消失了。

     $temp = new xmlrpcmsg();
    

    然后我只是保持循环原样

      //$temp = new xmlrpcmsg();
      foreach ($data as $key => $value) {
        if($key == 'get_campaign'){
          break;
      }elseif ($key == 'mf_account' || $key == 'mf_username' || $key == 'mf_password') {
        $credentials[$key] = $value; 
      }else{
        //this is where my problems occurs
        $keyValues = split('-', $key);
        $temp[$keyValues[0]] => new xmlrpcval($value, $keyValues[1]);
      }
    }     
    

    然后我像这样格式化消息

     $temp = new xmlrpcmsg("campaign.all", array( new xmlrpcval($temp), "struct"));
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-11-27
      • 2021-05-13
      • 2013-01-31
      • 2017-06-28
      相关资源
      最近更新 更多