2015-04-06 77 views
0

這可能是一個相當虛擬的問題。我一直在尋找網絡,並嘗試了很多,但我無法找到解決方案。使用Array作爲參數調用PHP中的另一個函數僅傳遞第一個元素(JSON RPC)

我發送核心數據對象作爲數組中的Dictionarys到我的PHP JSON RPC Web服務。在這一點上,我不會深究這一點,因爲我知道我的JSON RPC格式良好。

在PHP方面,我確實有一個RPC服務器,它將採用JSON數據並將其傳遞給相應的函數。

$ request = json_decode(file_get_contents('php:// input'),true);

使用的print_r我得到以下結果

的print_r($請求[ 'PARAMS']);

(對不起,我不知道如何包括「陣列(」並在框中閉合「)」)

Array 
(
[0] => Array 
    (
     [dayId] => 7 
     [dayName] => Sonntag 
    ) 

[1] => Array 
    (
     [dayId] => 6 
     [dayName] => Samstag 
    ) 

[2] => Array 
    (
     [dayId] => 4 
     [dayName] => Donnerstag 
    ) 

[3] => Array 
    (
     [dayId] => 2 
     [dayName] => Dienstag 
    ) 

[4] => Array 
    (
     [dayId] => 1 
     [dayName] => Montag 
    ) 

) 

如前所述,此陣列被現在傳遞給相應的使用

$結果= @call_user_func_array(陣列($對象,$請求[ '法']),$請求[ 'PARAMS']))

功能這將在我的實現類中調用方法updateDaysFromClient。 在這一點上,我想重申,我的JSON RPC格式正確(方法,ID,PARAMS)。

公共職能updateDaysFromClient($ clientDaysArray){

的print_r($ clientDaysArray);

return「Update test」;
}

現在到了我的問題:在我的實現,要求作爲參數傳遞的陣列上的print_r的時候,我就收到的只是數組的第一個元素。

陣列 (

[大衛·] => 7

[DAYNAME] =>桑塔格

任何人都可以向我解釋爲什麼不整個陣列但只有第一個元素被傳遞?

回答

0

請嘗試通過這樣,

$result = @call_user_func_array(array($object,$request['method']),array($request['params']))) 

通$請求[ 'PARAMS']另一個數組中。

+0

它的工作原理??????? – 2015-04-06 10:57:00

+0

嗨Manadh,它的工作原理。萬分感謝!現在即時通訊等待計時器讓我接受你的問題:)爲什麼有必要將一個數組傳遞到另一個數組? – Erik 2015-04-06 11:02:57

+0

由於我們使用的是call_user_func_array,它接受數組形式的參數和方法 – 2015-04-06 11:03:52

相關問題