我正在尝试用数组替换 $row['roles']
的值:
$row['roles'] = array(
"admin" => true,
"user" => true
);
或
$row['roles'] = array("admin", "user"); // I think this is not posible, since php autogenerates the index keys.
这是我所拥有的对我不起作用的代码:
$row['roles'] = '["admin","user"]';
$roles = json_decode($row['roles'], true);
foreach($roles as $role){
$row['roles'][$role] = true; // Warning illegal string offset 'admin'
}
var_dump($row['roles']); // string '1"admin","user"]' (length=16)
有谁知道如何从 json 字符串生成这样的数组?
我也试过用explode生成数组,但我得到的只是一个索引数组array(1=>admin,2=>user)
我想进行 if(isset($row['admin'])
检查。
答案 0 :(得分:2)
出现错误“警告非法字符串偏移'admin'”的原因是你的数组没有初始化为key => value数组,所以你不能使用“admin”作为key。
用这个重新初始化你的数组:$row['roles'] = []; 您的代码将正常工作。
$row['roles'] = '["admin","user"]';
$roles = json_decode($row['roles'], true);
$row['roles'] = [];
foreach($roles as $role){
$row['roles'][$role] = true;
}
var_dump($row['roles']);
但是根据您的实际需求,我认为它应该更简单。