php - html页面构造的多维数组在服务器端无法获取值

 功民昌 发布于 2022-12-01 06:36

项目采用Thinkphp,前端框架用dwz,在页面构造了一个二维数组,如下:

短消息 
邮件 
微信 

提交上去后,打印noticetype这个数组,得到的结果是:
Array
(

[9353] => Array
    (
        ['msg'] => msg
    )

[9784] => Array
    (
        ['wechat'] => wechat
    )

[10113] => Array
    (
        ['email'] => email
    )

)

但是,当使用循环遍历上面这个数组,或者输出:
"$_POST\[noticetype\]\[9784\][\'wechat\"这种格式
却显示空白,是不是post不该这样使用二维数组?
为什么能打印出完整的二维数组却无法获取单个值呢?

1 个回答
  • 用你的给出的现有的数据模拟了一遍,发现是你的提交表格的时候的数组里面的键值加了引号的问题。
    给你看看我用你的数据写的:

    <?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加上引号也就是<input type="checkbox" value="msg" name="noticetype[9353]['msg']" />这样的话,foreach循环可以取到值但是$_POST['noticetype'][9353]['msg']这样取不到值。

    2022-12-01 06:43 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有