Форматирование массива 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"));
0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]