我正在编写一个PHP函数,我想问一个问题。我以特定方式爆炸字符串时遇到问题。我试图在下面尽可能解释。
这是怎麽?
井。。我正在研究一种解决方案来减少我网站上的表格数量。我可以将管理员权限表转换为用户表中的一个字段。但是,我需要在加载网站时将文本字段分解为数组。代码如下所示:
<?php
$string = "server1=(ban=(perm=false,normal=true),edit=true,delete=false),adminlog=true,server2=(ban=(perm=false,normal=true),edit=false,delete=true)";
function parseRights( $s="" ){
$context = array();
// code here
}
print_r(parseRights($string));
?>
基本上,我希望结果是:
Array
(
[server1] => Array
(
[ban] => Array
(
[perm] => false
[normal] => true
)
[edit] => true
[delete] => false
)
[adminlog] => true
[server2] => Array
(
[ban] => Array
(
[perm] => false
[normal] => false
)
[edit] => false
[delete] => true
)
)
真和假应该是 PHP 真和假。如果这样写出来,我知道它会显示 1 在哪里 true 在哪里,而 0 在哪里什么都没有。.但这只是为了向您展示我希望数组在运行函数后的样子。我希望它能够创建一个"无限"数组,每个新括号创建一个新数组。当然,如果函数以相同的方式工作,我很乐意接受其他方法来区分正确的权利。
只是为了帮助你一点。 最好是使用存储每个功能部分的相关表,例如与服务器表或类似内容相关的禁止表和权限表。 如果您不打算将其正确存储在数据库中,至少可以省去一些麻烦:
$array = array('server1'=>array('ban'=>array('perm'=>false,'normal'=>true),'edit'=>true,'delete'=>false));
$string = json_encode($array);
echo $string;
/*
{"server1":{"ban":{"perm":false,"normal":true},"edit":true,"delete":false}}
*/
$new_array = json_decode($string, true);
var_export($new_array);
/*
array
(
'server1' =>
array (
'ban' =>
array (
'perm' => false,
'normal' => true,
),
'edit' => true,
'delete' => false,
),
)
*/
看看 JSON 字符串看起来与您的字符串非常相似吗? 您也可以使用serialize()
但JSON是标准化和可移植的。
此外,var_dump()
和var_export()
将显示实际存储true
和false
,print_r()
只是没有显示正确的类型。