【发布时间】: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