Задать вопрос
@Zoten
Noob

Как из БД сразу получить простой массив?

Отправляю запрос в БД и получаю такой массив:
$order_ids_approved = $wpdb->get_results( "SELECT `ID` FROM `avt_posts` WHERE `post_status` = 'wc-approved' AND (`post_date` BETWEEN '{$start_day}' AND '{$end_day}')" );

array(3) { [0]=> object(stdClass)#23446 (1) { ["ID"]=> string(5) "12160" } [1]=> object(stdClass)#23412 (1) { ["ID"]=> string(5) "12162" } [2]=> object(stdClass)#23444 (1) { ["ID"]=> string(5) "12163" } }

А как получить сразу из БД массив в таком виде?
array(3) { [0]=> string(5) "12160" [1]=> string(5) "12162" [2]=> string(5) "12163" }

Сейчас средствами "foreach" получаю нужного вида массив для дальнейшей работы, но мне кажется это не правильно.
$order_ids_approved = $wpdb->get_results( "SELECT `ID` FROM `avt_posts` WHERE `post_status` = 'wc-approved' AND (`post_date` BETWEEN '{$start_day}' AND '{$end_day}')" );

$order_id_name = [];
foreach ( $order_ids_approved as $order_id_approved ) :
    $order_id_name[] = $order_id_approved->ID;
endforeach;
  • Вопрос задан
  • 240 просмотров
Подписаться 1 Простой Комментировать
Решения вопроса 1
lidacriss
@lidacriss
wtf
перепроверил у себя
с параметром OBJECT_K
$order_ids_approved = $wpdb->get_results( "SELECT `ID` FROM `avt_posts` WHERE `post_status` = 'wc-approved' AND (`post_date` BETWEEN '{$start_day}' AND '{$end_day}')", OBJECT_K);


будет отдан ассоциативный массив, "первые" ключи которого будет первое значение в SQL запросе, в данном случае "ID". т.е. как раз если нужны эти же ID, то можно будет их брать либо с перебором foreach
foreach($rows as $key => $row)
где $key - будет наше нужное значение
либо выполнить функцию array_keys
и получим новый массив с ключами (айдишниками)
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
https://developer.wordpress.org/reference/classes/...
$order_ids_approved = $wpdb->get_results( "SELECT `ID` FROM `avt_posts` WHERE `post_status` = 'wc-approved' AND (`post_date` BETWEEN '{$start_day}' AND '{$end_day}')", ARRAY_A );
Ответ написан
Ваш ответ на вопрос

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

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