我正在编写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在哪里是真的,什么都不是0 ......但它只是为了向你展示在运行该函数后我希望数组看起来像什么。我希望它能够创造一个无限的&#34;数组,每个新括号创建一个新数组。如果函数以相同的方式工作,我很乐意接受其他方法来区分正确的权利。
答案 0 :(得分:1)
只是为了帮助你一点点。更好的方法是拥有存储每个功能部分的相关表,例如 ban 表和权限表,这两个表都与服务器表相关联类似。如果您不打算将其妥善存储在数据库中,至少可以省去一些麻烦:
$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()
只显示正确的类型。