2014-10-07 81 views
0

我有以下阵列格式化xmlrpcmsg阵列

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: 

回答

0

通过消除$ 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")); 
消息