1

我有这个数组,我尝试过以同样的方式返回它。

例子:

        $this->permission_array = array(
                                    'orders'                => 1,
                                    'orders_Status'         => 0,
                                    'schools'               => 0,
                                    'accommodation'         => 0,
                                    'users'                 => 1,
                                    'news'                  => 0,
                                    'blocks'                => 1,
                                    'settings'              => 0,
                                    'videos'                => 1,
                                    );

将其内爆并插入到数据库后,它变成了这样。

USER_ID     USER_NAME           USER_PERMISSION
---------------------------------------------------
  1302       Othman             1,0,0,0,1,0,1,0,1

现在如果我使用explode,它会作为一个数组返回,但键不一样。我如何将这些值传输到与此数组不同的同一个数组:

[0] => 1
[1] => 0
[2] => 0
[3] => 0
[4] => 1
[5] => 0
[6] => 1
[7] => 0
[8] => 1  

无论如何要再次将最后一个数组更改为第一个数组?提前致谢。

我的想法是更改数据库字段并创建一个新表。谢谢你们

4

6 回答 6

1

implode函数只关心值。

而不是使用implodeand explode,您可以使用json_encodeandjson_decode使用 json 作为您的保存格式,这将仍然是您的关键信息。

但真正的问题是您的数据库设计。

于 2012-05-17T07:28:01.020 回答
1

创建一个 user_permissions 表:

permission_id    permission_name

然后创建一张 users_2_permissions 表

user_id          permission_id

当您想要恢复阵列时,您将对JOIN用户、users_2_permissions 和 user_permissions 执行操作。

于 2012-05-17T07:29:28.727 回答
0

用于serialize()在数据库中存储数组。

于 2012-05-17T07:26:13.153 回答
0

您可以为此创建另一个表,例如 USER_PERMISSIONS (id, user_id, orders, orders_Status, ...) 其中 id 是主键,user_id 是 USERS 表的外键,所有其他字段包含相应权限的值. 这种方法可能会给您的查询增加一点复杂性,但它仍然比将 arrat 序列化为字符串要好。

于 2012-05-17T07:27:59.047 回答
0

简单的 ...

    $a=explode(',',$permitions_from_database);
    $names=array('orders','orders_Status','etc','etc')

    $i=0;
    foreach($names as $name)
    {
    $permission_array[$name]=$a[$i];
    $i++;
    }

但我认为你应该把数据放在不同的列上,最好是查询数据库谁对某事有权限,而不是把所有数据都带到 php 中然后处理它。

我希望它有所帮助:)

于 2012-05-17T07:33:48.843 回答
0

尽管没有暗示,您需要规范化,将值存储为双引号“”中的一个完整字符串,以防它影响您的数据库,从而无需重组您的数据库。

于 2012-05-17T07:34:01.573 回答