Как объединить многомерный массив в одномерный массив? - PullRequest
1 голос
/ 15 июля 2011

У меня есть метод класса, который возвращает результат в многомерном. метод, который я использую, это.

public function getUserRoles($userId) {
    $sth = $this->dbh->prepare('SELECT role_id FROM user_roles WHERE user_id = :userId');
    $sth->bindParam(':userId', $userId);
    $sth->execute();
    $roles = array();
    while($row = $sth->fetch(PDO::FETCH_ASSOC)) {
        $roles[] = array($row['role_id']);
    }
    return $roles;
}

и когда я вызываю метод

print_r($acl->getUserRoles(1));

возвращенный набор результатов, который я получаю.

Array ( [0] => Array ( [0] => 1 ) [1] => Array ( [0] => 2 ) [2] => Array ( [0] => 3 ) [3] => Array ( [0] => 4 ) [4] => Array ( [0] => 5 ) ) 

Однако я не хочу, чтобы значения возвращались в многомерном массиве, а хотел бы, чтобы возвращаемый результат был.

Array ( [0] => 1 [1] => 2 [2] => 3 [3] => 4 [4] => 5 )

Есть ли какая-нибудь нативная функция PHP, чтобы позаботиться об этом?

Спасибо

Ответы [ 2 ]

3 голосов
/ 15 июля 2011

Изменить эту строку кода

$roles[] = array($row['role_id']);

до

$roles[] = $row['role_id'];

в getUserRoles метод

3 голосов
/ 15 июля 2011

Функция fetchAll служит именно этой цели, если используется с опцией PDO::FETCH_COLUMN:

$roles = $sth->fetchAll(PDO::FETCH_COLUMN);
return $roles;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...