使用键和值将字符串转换为多维数组

时间:2014-04-01 21:20:04

标签: php arrays function multidimensional-array explode

我正在编写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;数组,每个新括号创建一个新数组。如果函数以相同的方式工作,我很乐意接受其他方法来区分正确的权利。

1 个答案:

答案 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()会显示truefalse实际存储,print_r()只显示正确的类型。

相关问题