Php 将数组转换为正确格式的JSON

Php 将数组转换为正确格式的JSON,php,arrays,json,Php,Arrays,Json,我正在尝试将数组转换为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"} 我的

我正在尝试将数组转换为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';
输出:

{
    "a": 1,
    "b": 1,
    "c": 1
}

我假设传入的数据如下所示

$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;
}

为什么要创建新阵列?只需对$check_列表进行编码,这是一个很好的观点。我会改变的。为什么不就这样,你说你需要这个在其他地方验证。大多数语言都能够解码这个json字符串。因为foreach没有创建正确的数组,所以任何特定的语言都失败了。数组将是[0]=>“管理员:1”、[1]=>“创建帖子:1”。。i、 例如,键/值对是数组中的字符串。我将用我的验证更新我的帖子,验证失败了字符串。你是个天才!非常感谢你!
foreach($check_list as $key) {
    $list[$key] = 1;
}