array(4) {
[0]=> array(1)
{ ["perm_desc"]=> string(10) "Can Delete" }
[1]=> array(1)
{ ["perm_desc"]=> string(8) "Can Edit" }
[2]=> array(1)
{ ["perm_desc"]=> string(10) "Can Create" }
[3]=> array(1)
{ ["perm_desc"]=> string(16) "Can Manage Roles" }
}
我正在努力寻找正确的方法来遍历这些数组。所以基本上我已经从数据库中提取了所有权限,并且我希望它在1个单个数组中,这样我可以在需要时进行后期操作。 但是数据库正在将这些数据插入乘法数组。
$results = static::customQuery($sql, ["role_id" => $role_id]);
if ($results) {
foreach ($results as $r) {
var_dump($r);
die();
}
我从包含4个数组的原始数组中得到了1个结果
array(1) { ["perm_desc"]=> string(10) "Can Delete" }
但是我真的想要这样的东西
['Can Edit', 'Can Manage', 'Can Create', 'Can Manage Roles']
这个想法真的很有帮助
答案 0 :(得分:1)
array_column
是为此而设计的:
$results = array_column($results, 'perm_desc');
答案 1 :(得分:0)
我设法解决了这个问题
static function results()
{
if (static::exec()) {
$results = static::$stmt->fetchAll();
return $results;
}
}
这是我代码库的一部分,我将其更改为
static function results()
{
if (static::exec()) {
$results = static::$stmt->fetchAll(PDO::FETCH_ASSOC);
return $results;
}
}
by adding PDO::FETCH_ASSOC
我在Roles类中循环了吗
$results = static::customQuery($sql, ["role_id" => $role_id]);
if ($results) {
foreach ($results as $result) {
$role->permissions[$result["perm_desc"]] = true;
}
}
var_dump($role);
die();
现在我得到了预期的结果
object(Core\Layers\Roles)#14 (1) {
["permissions":protected]=>
array(8) {
["Can Delete"]=> bool(true)
["Can Edit"]=> bool(true)
["Can Create"]=> bool(true)
["Can Manage Roles"]=> bool(true)
["Can Backup"]=> bool(true)
["Can Download"]=> bool(true)
["Create Menu"]=> bool(true)
["test"]=> bool(true)
}
}