迭代后PHP post请求中神秘的空数组

迭代后PHP post请求中神秘的空数组,php,arrays,api,post,curl,Php,Arrays,Api,Post,Curl,我试图通过curlpost请求接收一个数组,但我遇到了一个extrange问题 长话短说:这是我们所在的api控制器,当我对响应进行json_编码时 echo json_encode($_POST['keys']); return; 结果(在api通信的调用端): 等等。因此api接收我的参数数组没有问题 然后在api中,我尝试使用foreach循环对每个字符串进行URL解码,以使这些值位于其他数组中: $myArray = array(); foreach ($_POST['keys']

我试图通过curlpost请求接收一个数组,但我遇到了一个extrange问题

长话短说:这是我们所在的api控制器,当我对响应进行json_编码时

echo json_encode($_POST['keys']); return;
结果(在api通信的调用端):

等等。因此api接收我的参数数组没有问题

然后在api中,我尝试使用foreach循环对每个字符串进行URL解码,以使这些值位于其他数组中:

$myArray = array();

foreach ($_POST['keys'] as $key => $value)
{
    $myArray[$key] = urldecode($value);
    // Or $myArray[] = urldecode($value); -- same result
}

echo json_encode($myArray); return;
这就是结果:

NULL
我做错了什么

提前感谢:)

==================================================================================

编辑:问题似乎是,在api控制器(位于yii应用程序中)中,urledecode不起作用。utf8\u和base64\u都不解码。至少它们在foreach循环中不起作用。他们为什么不工作?我不知道。我还是被卡住了

==================================================================================

编辑2:我在隔离问题方面取得了一些进展,在SO的另一个问题上问道。对此很抱歉,可能会被关闭


我认为你的问题不在这里。。。你确定你的$\u贴子['keys']在使用时可以吗?您应该尝试回显循环中的内容,或者在之前打印($\u POST['keys'])

我试过这个:

$\u POST['keys']=Array('some+urlencoded+string','and+some+other');
$myArray=array();
foreach($_POST['keys']作为$key=>$value)
$myArray[$key]=urldecode($value);
回声'

在$\u POST['keys']和$myArray上打印,我认为您的循环不起作用。

首先,感谢您花时间回复。我提醒您,这是我从另一个应用程序调用的api,我只能var_转储$data=callApi(array('keys'=>$keys));在原始应用程序中(调用api()的应用程序。这就是为什么我只能有一个echo json_encode(),这就是我看到的。我不能告诉你更多…你确定你的foreach循环了一个真正的数组变量吗?你仍然可以var_转储你尝试foreach的变量吗?即使有问题,你也不应该有“null”只要你真的进入了foreach循环。在json_encode之后,你试过打印$myArray的大小吗?循环中的var_dump($value)和var_dump(urlencode($value))是什么?也许你的$value不是可以编码的常规字符串?你试过urlencode((string)$value)吗?
NULL
array(2) {
  [0]=>
  string(22) "some+urlencoded+string"
  [1]=>
  string(14) "and+some+other"
}
["some+urlencoded+string","and+some+other"]

["some urlencoded string","and some other"]