2014-10-07 4 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]); 
    } 
    } 

Для меня отладки это вдвойне неловко, потому что я должен развить внутри Друпала и форма обрабатывается через 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")); 
Смежные вопросы