用关联数组文本键替换值

时间:2021-03-26 22:58:57

标签: php

我正在尝试用数组替换 $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']) 检查。

1 个答案:

答案 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']);

但是根据您的实际需求,我认为它应该更简单。

相关问题