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

时间:2014-02-07 10:49:50

标签: php arrays api post curl

我正在尝试通过cURL POST请求接收一个数组,而且我遇到了一个问题。

长话短说:这是我们所处的api控制器,当我json_encode响应时......

echo json_encode($_POST['keys']); return;

结果(在api通信的主叫端):

array(361) {
  [0]=>
  string(26) "some+urlencoded+string"
  [1]=>
  string(14) "and+some+other"
  ...
}

等等。所以api接收我的参数数组没有问题。

然后在api中我尝试使用foreach循环对每个字符串进行urldecode,将这些值放在其他数组中:

$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_decode,也不是base64_decode。无论如何,至少它们不能在foreach循环中工作。他们为什么不工作?甘拜下风。我还是被卡住了。

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

编辑2:我在问题的隔离方面取得了一些进展,在SO问了另一个问题。对不起,不妨关闭。

PHP (CI) cURL passed multidimensional array does not behave as one (Can't loop it)

1 个答案:

答案 0 :(得分:1)

我认为你的问题不在这里......你确定你的$ _POST ['key']在你做到这一点时还可以吗?你应该尝试在你的循环中回应一些东西,或者在之前回复print_r($ _ POST ['keys'])。

我试过了:

$_POST['keys'] = Array('some+urlencoded+string','and+some+other') ;
$myArray = array();

foreach ($_POST['keys'] as $key => $value)
    $myArray[$key] = urldecode($value);

echo '<pre>' ;
var_dump($_POST['keys']) ;
echo json_encode($_POST['keys']);
echo "\n" ;
echo json_encode($myArray);
echo '</pre>' ;
这是非常正确的:

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"]

在$ _POST ['keys']和$ myArray上创建print_r,我认为你的循环不起作用。