使用数组作为参数调用 PHP 中的另一个函数,仅传递第一个元素 (JSON RPC)
Calling another function in PHP with Array as Parameter passing only first element (JSON RPC)
这可能是一个相当愚蠢的问题。我一直在网上搜索并尝试了很多,但我就是找不到解决方案。
我将核心数据对象作为数组中的字典发送到我的 PHP JSON RPC Web 服务。我现在不会深入研究这一点,因为我知道我的 JSON RPC 格式正确。
在 PHP 方面,我有一个 RPC 服务器,它将获取 JSON 数据并将其传递给相应的函数。
$request = json_decode(file_get_contents('php://input'),true);
使用print_r我得到以下结果
print_r($request['params']);
(抱歉,我不知道如何在框中包含 'Array (' 和结束符 ')')
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
)
)
如前所述,现在使用
将该数组传递给相应的函数
$result = @call_user_func_array(array($object,$request['method']),$request['params']))
这将在我的实现 class 中调用方法 updateDaysFromClient。
在这一点上,我想重复一遍,我的 JSON RPC 格式正确(方法、ID、参数)。
public function updateDaysFromClient($clientDaysArray) {
print_r($clientDaysArray);
return "Update test";
}
现在我的问题来了:在我的实现中,当在作为参数传递的数组上调用 print_r 时,我只会收到该数组的第一个元素。
Array
(
[dayId] => 7
[dayName] => Sonntag
)
任何人都可以向我解释为什么不传递整个数组而只传递第一个元素吗?
请尽量这样通过,
$result = @call_user_func_array(array($object,$request['method']),array($request['params'])))
在另一个数组中传递 $request['params']。
这可能是一个相当愚蠢的问题。我一直在网上搜索并尝试了很多,但我就是找不到解决方案。
我将核心数据对象作为数组中的字典发送到我的 PHP JSON RPC Web 服务。我现在不会深入研究这一点,因为我知道我的 JSON RPC 格式正确。
在 PHP 方面,我有一个 RPC 服务器,它将获取 JSON 数据并将其传递给相应的函数。
$request = json_decode(file_get_contents('php://input'),true);
使用print_r我得到以下结果
print_r($request['params']);
(抱歉,我不知道如何在框中包含 'Array (' 和结束符 ')')
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
)
)
如前所述,现在使用
将该数组传递给相应的函数$result = @call_user_func_array(array($object,$request['method']),$request['params']))
这将在我的实现 class 中调用方法 updateDaysFromClient。 在这一点上,我想重复一遍,我的 JSON RPC 格式正确(方法、ID、参数)。
public function updateDaysFromClient($clientDaysArray) {
print_r($clientDaysArray);
return "Update test";
}
现在我的问题来了:在我的实现中,当在作为参数传递的数组上调用 print_r 时,我只会收到该数组的第一个元素。
Array (
[dayId] => 7
[dayName] => Sonntag
)
任何人都可以向我解释为什么不传递整个数组而只传递第一个元素吗?
请尽量这样通过,
$result = @call_user_func_array(array($object,$request['method']),array($request['params'])))
在另一个数组中传递 $request['params']。