遍历数组

时间:2019-12-14 13:21:03

标签: php arrays loops

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']

这个想法真的很有帮助

2 个答案:

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