我有这个数组,我试图以同样的方式返回它。
示例:
$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
是否有将最后一个数组再次更改为第一个数组?提前致谢。
答案 0 :(得分:1)
implode
函数只关心值。
您可以使用implode
和explode
来使用json作为保存格式,而不是使用json_encode
和json_decode
。这将是您的关键信息。
但真正的问题是你的数据库设计。
答案 1 :(得分:1)
创建一个user_permissions表:
permission_id permission_name
然后创建一个users_2_permissions表
user_id permission_id
当您想要恢复数组时,您将对用户,users_2_permissions和user_permissions执行JOIN
。
答案 2 :(得分:0)
使用serialize()
在数据库中存储数组。
答案 3 :(得分:0)
您可以为此创建另一个表,例如USER_PERMISSIONS(id,user_id,orders,orders_Status,...),其中id是主键,user_id是USERS表的外键,所有其他字段包含值各自的权限。这种方法可以为查询增加更多的复杂性,但它仍然比将arrat序列化为字符串更好。
答案 4 :(得分: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然后处理它。
我希望它有所帮助:)
答案 5 :(得分:0)
不是暗示,你需要规范化,将值作为一个整数字符串存储在双引号“”中,以防它影响你的数据库而不需要重构数据库。