@phpcoder81

Как вывести данные из БД с ключами?

Ребят, как заменить такую конструкцию?
$data = array();
foreach($stmt->fetchAll() as $val){
  $data[$val['id']] = $val;
}

Может есть режим какой-нибудь PDO, чтобы сразу ключи брала из БД, а не от 0.
  • Вопрос задан
  • 140 просмотров
Решения вопроса 1
FanatPHP
@FanatPHP
Чебуратор тега РНР
Разумеется, такой режим есть. И разумеется, он совершенно неизвестен тем, кто учил похапе по видеокурсам.
PDO умеет возвращать данные в десятках разных форматов, и в частности индексировать выборку первым полем указанным в запросе
$data = $stmt->fetchAll(PDO::FETCH_UNIQUE);
В случае, если нам нужен словарь то для этого есть режим, который возвращает не вложенные массивы, а одномерный массив, который состоит из пар ключ-значение
$data = $pdo->query("SELECT id, name FROM table")fetchAll(PDO::FETCH_KEY_PAIR);
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
@Arik
Вроде готового нет, но как вариант заюзать array_column

как-то так
$data = array_column($stmt->fetchAll(), null, 'id');


но нужно иметь виду что эта функция по разному ведет себя в php56 и php7
Ответ написан
flapflapjack
@flapflapjack
на треть я прав
У вас и так ключи берутся. Что вы хотите?
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы