我试图将我的数组转换为JSON。
我的JSON存储在数据库中,稍后将被解码以进行权限检查。
实施例,
我希望它如何存储在数据库中:
{ "admin": 1,
"create_posts": 1,
"edit_posts": 1,
"delete_posts": 1 }
现在如何存储:
{"0":"\"admin\": 1",
"1":"\"create_posts\": 1",
"2":"\"edit_posts\": 1",
"3":"\"delete_posts\": 1"}
我的代码:
$check_list = $_POST['check_list'];
$list = array();
foreach($check_list as $key) {
$key = '"' . $key .= '": 1';
array_push($list, $key);
}
$json = json_encode($list, JSON_FORCE_OBJECT);
我如何才能将它存储在数据库中,就像我想要的那样?
我对此很新,所以任何提示而非直接答案也非常感谢!
JSON解码和验证:
$permis = json_decode($permissions->permissions, true);
echo ($permis['admin'] == true) ? 'allowed' : 'disallowed';
答案 0 :(得分:1)
$arr = [ 'a', 'b', 'c' ];
echo json_encode(
array_combine(
$arr,
array_fill(0, count($arr), 1)
),
JSON_PRETTY_PRINT
);
输出:
{
"a": 1,
"b": 1,
"c": 1
}
答案 1 :(得分:0)
我假设传入的数据看起来像这样。
$incoming_data = "admin=1&create_posts=1&edit_posts=1&delete_posts=1";
$pairs = parse_str($incoming_data);
所以我们采用传入的对并使用$ key作为数组索引,这样你就不会获得额外的数组元素索引。
$permissions = array();
foreach($pairs as $key => $value){
$permissions[$key] = $value;
}
然后我们对新数组进行编码以获取您正在寻找的JSON。
print json_encode($permissions);
会打印出这样的JSON:
{
"admin":"1",
"create_posts":"1",
"edit_posts":"1",
"delete_posts":"1"
}
代码中要改变的主要是这个。
foreach($check_list as $key) {
$list[$key] = 1;
}