2015-06-17 126 views
-3

有問題我正在嘗試解決。我有以下傳遞數組時發生PHP錯誤

$inputParams = array(); 

//fill up array 

if (!empty($inputParams)) { 
    $controller = new ConnectionService(); 
    $response = call_user_func_array(array($controller, "obtainToken"), $inputParams); 
    var_dump($inputParams); 
} 

現在,在上述的var_dump,輸出是一樣的東西

array(2) { [0]=> string(24) "[email protected]" [1]=> string(13) "+44776587535" } 

所以它清楚地輸出的陣列。您還會看到我將該數組傳遞給call_user_func_array調用中的函數。這個數組傳遞給我的ConnectionService類,函數obtainToken

現在上面的方法做了一些工作(與數組),然後通過該陣列到另一個功能

public function obtainToken($inputParams) 
{ 
    //other stuff 

    try{ 
     $this->insertData($inputParams); 
    } catch (Exception $e) { 
     var_dump($e); 
    } 
} 

然後爲陣

public function insertData($inputParams) 
{ 
    var_dump($inputParams); 

    try{ 
     //some stuff 
    } catch (Exception $e) { 
     var_dump($e); 
    } 
} 

最後一個功能,你可以看,然後我再var_dump的陣列,但是這一次我得到

string(24) "[email protected]" 

所以浩W有我的數組從一個數組轉換成一個字符串?

感謝

+0

我的錢在'some stuff'或'other stuff'上。 – billynoah

+0

當你傳遞兩個參數時(因爲數組有兩個元素),你只能'捕獲'你的方法中的一個參數。要麼接受方法中的2個參數,要麼使用'call_user_func'如果你想要一個參數(數組) – PeeHaa

+0

obtainToken沒有得到數組,只有數組 –

回答

1

封裝你$ inputParams參數轉換爲一個數組,這樣第一個參數傳遞給obtainToken是$ inputParams陣列。

$response = call_user_func_array(array($controller, "obtainToken"), array($inputParams)); 
+0

多數民衆贊成在第一個元素多數民衆贊成在工作,謝謝。是否有任何理由它必須被封裝?它是一個數組在首先,當我檢查文檔此參數期望一個數組它是) –

+1

call_user_func的第二個參數是一個參數數組,因此當你傳遞$ inputParams時,它實際上傳遞了2個參數,它們是$ inputParams [0]和$ inputParams [1]。數組[0]中包含$ inputParams數組的第一個元素。 –

相關問題