2013-07-31 3 views
1

У меня запрос MYSQL проходит через фреймворк (WolfCMS).Слияние нескольких объектов

$sql_query = 'SELECT DISTINCT country FROM ' . $tableName . ' ORDER BY country ASC'; 
$countries = Record::query($sql_query, array()); //execute query 

Но что возвращается массив объектов, как этот

Array ([0] => stdClass Object ( 
     [country] => Canada) [1] => stdClass Object ( 
     [country] => France)) 

Я задавался вопросом, есть ли способ с PHP, чтобы объединить все объекты, чтобы получить массив как можно более простым, как

Array ([0] => Canada [1] => France) 

Я знаю, что я всегда мог разобрать массив с foreach цикла как только я получаю данные и создать пользовательский массиву, как мне нужно, но мне было интересно, если есть способ, чтобы напрямую получить данные в окончательную форму из базы данных.

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

* EDIT *

Я нашел лучший способ. Мне просто пришлось избегать выполнения запроса с помощью класса Record.

Вот как

//create sql statement 
$sql_query = 'SELECT DISTINCT country' . 
      ' FROM ' . Record::tableNameFromClassName(__CLASS__) . 
      ' ORDER BY country ASC'; 
$stmt = Record::getConnection()->prepare($sql_query); 
$stmt->execute(array()); 
return $stmt->fetchAll(Record::FETCH_COLUMN); 
+2

Какие рамки вы используете, некоторые структуры имеют встроенную возможность получения массива вместо объекта. почему способ возврата данных важен в вашей ситуации? – DevZer0

+0

Можете ли вы опубликовать код, который вы используете для выполнения и получения запроса? – jterry

+0

Возможный дубликат http://stackoverflow.com/questions/455700/what-is-the-best-method-to-merge-two-php-objects –

ответ

1

Вы пробовали array_map?

$countries = array_map(function ($item) { return $item->country; }, $result); 
+0

Это очень элегантное решение. Гораздо чище, чем цикл for. спасибо –

1

Вы не сможете этого добиться только с запросом в WolfCMS. Вы должны попробовать:

$finalArr = array(); 
for($i=0; $i<sizeof($result);$i++) // $result being your query result 
    array_push($finalArr,$result[$i]->country); 

print_r($finalArr); 
+0

@ DevZer0 спасибо за головокружение –

+1

Насколько я знаю, это решение известно, он ищет «более чистый»/более простой способ сделать это. – Vatev

+0

@ Ватев. Но это также сработает. –

Смежные вопросы