以适当的格式将数组转换为JSON

时间:2016-01-04 19:28:22

标签: 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"}

我的代码:

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

我如何才能将它存储在数据库中,就像我想要的那样?

我对此很新,所以任何提示而非直接答案也非常感谢!

UPDATE:

JSON解码和验证:

$permis = json_decode($permissions->permissions, true);

echo ($permis['admin'] == true) ? 'allowed' : 'disallowed';

2 个答案:

答案 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;
}