PHP解析$_POST数组?

3
一台服务器按照以下格式向我发送了一个$_POST请求:
POST {
  array1
  {
    info1,
    info2,
    info3
  },
  info4
}

因此,我可以使用$_POST['#info']非常简单地提取信息#。 但是,我如何在array1中获取这三个信息? 我尝试了$_POST['array1']['info1'],但没有成功。

谢谢!

 a:2:  {s:7:"payload";s:59:"{"amount":25,"adjusted_amount":17.0,"uid":"jiajia"}";s:9:"signature";s:40:"53764f33e087e418dbbc1c702499203243f759d4";}

POST的序列化版本。
3个回答

10

使用索引符号:

$_POST['array1'][0]
$_POST['array1'][1]
$_POST['array1'][2] 
如果您需要迭代变量响应:
for ($i = 0, $l = count($_POST['array1']); $i < $l; $i++) {
    doStuff($_POST['array1'][$i]);
}

在纯 PHP 中,这更多或少采用以下形式:

$post = array();
$post['info'] = '#';
$post['array1'] = array('info1', 'info2', 'info3');

http://codepad.org/1QZVOaw4

你可以看到这只是一个数组嵌套的数组,使用数字索引。


注意,如果是关联数组,需要使用 foreach()

foreach ($_POST['array1'] as $key => $val) {
    doStuff($key, $val);
}

http://codepad.org/WW7U5qmN

:该链接指向一个网页,可能包含代码或其他有关编程的内容。

相同于上述内容...显示单个字符而非值。 - Yinan Wang
我想你现在所做的是枚举键。我猜你没有意识到,在PHP中,这看起来像是一个数字列表语法。所以,我可以理解问题出在哪里。 - Jared Farrish
大多数情况下,只需显示键和值,例如 array1 { list1 = val, list2 = val, ...} 不要让其留给解释。 - Jared Farrish
注意,我添加了一个简单的关联数组示例。 - Jared Farrish
它使用JSON序列化:http://codepad.org/KT03GPda JSON已经成为在Web系统(以及其他系统)中编码数据的标准方法,因此仅使用JSON。我建议避免使用PHP序列化。 - Jared Farrish
显示剩余21条评论

2

尝试

$_POST['array1'][0]
$_POST['array1'][1]
$_POST['array1'][2]

用户可以使用类似以下的 for 循环来遍历 $_POST['array1'] 数组:for ($counter=0; $counter<count($_POST['array1']); $counter++) { $_POST['array1'][$counter]; } - Anant Dabhi

1
您可以在 $_POST 上使用 foreach 循环。
foreach($_POST["array1"] as $info)
{
    echo $info;
}

或者您可以通过它们的索引访问:

for($i = 0; $i<sizeof($_POST["array1"]); $i++)
{
    echo $_POST["array1"][$i];
}

提取功能会有效吗?对于info#,它可以为我获得一个序列化的array1数组,但是array1数组的内容呢? - Yinan Wang
你应该尝试对它进行一些调整,你也可以使用foreach($_POST as $post)循环遍历数据,然后向下循环。在玩弄它时,你可能想使用<pre><%print_r($_POST);%></pre>来查看你的帖子的真实格式。 - Bjørn Thomsen

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接