项目采用Thinkphp,前端框架用dwz,在页面构造了一个二维数组,如下:
<td>
<input type="checkbox" value="msg" name="noticetype[{$vo['staffId']}]['msg']" />短消息
<input type="checkbox" value="email" name="noticetype[{$vo['staffId']}]['email']" />邮件
<input type="checkbox" value="wechat" name="noticetype[{$vo['staffId']}]['wechat']" />微信
</td>
提交上去后,打印noticetype这个数组,得到的结果是:
Array
(
[9353] => Array
(
['msg'] => msg
)
[9784] => Array
(
['wechat'] => wechat
)
[10113] => Array
(
['email'] => email
)
)
但是,当使用循环遍历上面这个数组,或者输出:
"$_POST[noticetype][9784]['wechat"这种格式
却显示空白,是不是post不该这样使用二维数组?
为什么能打印出完整的二维数组却无法获取单个值呢?
用你的给出的现有的数据模拟了一遍,发现是你的提交表格的时候的数组里面的键值加了引号的问题。
给你看看我用你的数据写的:
<?php
if($_POST){
echo "<pre>";
print_r($_POST);
echo "</pre>";
echo "-----------------------------------------------"."<p>";
echo $_POST['noticetype'][9353]['msg']."<br>";
echo $_POST['noticetype'][9784]['email']."<br>";
echo $_POST['noticetype'][10113]['wechat']."<br>";
echo "---------------------------------------------"."<p>";
foreach ($_POST['noticetype'] as $key => $value) {
foreach ($value as $k => $v) {
echo $v.'<br>';
}
}
}
?>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<title>index</title>
<link rel="stylesheet" href="">
</head>
<body>
<table>
<thead>
<tr>
<td>
<form action="demo.php" method="post" accept-charset="utf-8">
<input type="checkbox" value="msg" name="noticetype[9353][msg]" />短消息
<input type="checkbox" value="email" name="noticetype[9784][email]" />邮件
<input type="checkbox" value="wechat" name="noticetype[10113][wechat]" />微信
<input type="submit" name="submit" value="提交">
</form>
</td>
</tr>
</thead>
</table>
</body>
</html>
结果展示:
如果你将msg加上引号也就是这样的话,foreach循环可以取到值但是$_POST'noticetype'['msg']这样取不到值。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。