【问题标题】:Checkbox array explode values and store in new array复选框数组爆炸值并存储在新数组中
【发布时间】:2014-05-15 00:53:17
【问题描述】:

今天,我一直在处理具有权限系统的页面。一切都回显出来了,复选框看起来很像这样:

<table>
    <tr>
        <td><input type="checkbox" name="permissions[]" value="main" /></td>
        <td>Access Admin Panel</td>
    </tr>
    <tr>
        <td><input type="checkbox" name="permissions[]" value="config.admin-accounts" /></td>
        <td>Configure Admin Accounts</td>
    </tr>
    <tr>
        <td><input type="checkbox" name="permissions[]" value="config.admin-roles" /></td>
         <td>Configure Admin Roles</td>
    </tr>
    <tr>
        <td><input type="checkbox" name="permissions[]" value="world1.ban.permanent" /></td>
        <td>[World 1]: Ban players permanently</td>
    </tr>
    <tr>
          <td><input type="checkbox" name="permissions[]" value="world1.ban.normal" /></td>
          <td>[World 1]: Ban players</td>
    </tr>
    <tr>
          <td><input type="checkbox" name="permissions[]" value="world2.ban.permanent" /></td>
          <td>[World 2]: Ban players permanently</td>
    </tr>
    <tr>
          <td><input type="checkbox" name="permissions[]" value="world2.ban.normal" /></td>
          <td>[World 2]: Ban players</td>
    </tr>
</table>

在我的网站上,有多个世界、服务器或任何您想称呼它们的名称。另外,我希望能够在权利中实际拥有类别。这基本上意味着我想要一个包含尽可能多的子类别的多维数组,而无需更改脚本。到目前为止我做了什么:

<?php
    $permissions = $_POST['permissions'];
    $resArray = array(); //array to store everything in
    foreach($permissions as $val){
        $keys = explode(".", $val);
        $last_key = $keys[count($keys)-1];

        foreach($keys as $key => $value) {
            if($last_key != $value){
                //code here
            }else{
                //code here
            }
        }
    }
?>

我想要的结果是什么:

Array
(
    [main] => true
    [config] => Array
        (
            [admin-accounts] => true
            [admin-roles] => true
        )
    [world1] => Array
        (
            [ban] => Array
                (
                    [permanent] => true
                    [normal] => true
                )
        )

    [world2] => Array
        (
            [ban] => Array
                (
                    [permanent] => true
                    [normal] => true
                )
        )
)

基本上,如果选中该框,我希望数组值为 true,否则为 false。存储未检查的权限对我来说并不重要,因为它会在我的 php 检查中返回 false。我使用 serialize() 和 unserialize() 将权限存储在数据库中的一行中。

【问题讨论】:

  • 我的问题是如何让它工作。 PHP 代码不完整。我完全不知道如何在第二个 foreach-loop 内部进行操作。
  • 你爆YAML格式了吗?
  • No.. 我正在做的是在上面的代码中。我需要将结果存储在上面的数组中。创建数组后,我使用 serialize() 将其存储在数据库中的字段中

标签: php arrays multidimensional-array foreach explode


【解决方案1】:

为 PHP 复选框设置多维数组 你可以简单地发布像

<input type="checkbox" name="permissions[0][]" value="main" />
<input type="checkbox" name="permissions[1][]" value="main" />
<input type="checkbox" name="permissions[2][]" value="main" />

当你收到值时 你可以定义 权限[0] 为主 权限[1] 使用 if 条件配置等

希望能回答你的问题

【讨论】:

  • 谢谢。稍微编辑了您的代码,以使其在 PHP 中变得更容易。现在我所要做的就是在核心文件中编辑一个数组,这就是我想要的。再次感谢。
  • @Teskon 我的快乐伙伴。
  • 我没有经常使用这个网站 - 因此我还没有 15 名声望:P
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-02-18
  • 2021-02-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多