2011-03-27 317 views
3

嘿, 我使用FuelPHP,做這樣的...從二維陣列到一維陣列?

$query = 
    \DB::select('username') 
    ->from('users') 
    ->execute() 
    ->as_array(); 

我越來越陣列,如下圖所示。

Array 
(
    [0] => Array 
    (
    [username] => daGrevis 
) 

    [1] => Array 
    (
    [username] => whatever 
) 

    [2] => Array 
    (
    [username] => foobar 
) 

) 

這絕對不是我所需要的。這裏是我的「理想陣列」的例子:

Array 
(
    [0] => daGrevis 
    [1] => whatever 
    [2] => foobar 
) 

那麼我怎樣才能得到「理想陣列」呢?也許我在查詢中做了一些錯誤...如果沒有...我如何將數組#1轉換爲數組#2?使用循環也許?或者有內置功能?我很困惑。

+1

這是糟糕的框架重新發明輪子的問題。在PDO中,您可以編寫' - > fetchAll(PDO :: FETCH_COLUMN,0)'。 – NikiC 2011-03-27 14:21:26

+0

@nikic您是否在談論Fuel或所有PHP框架?如果只是關於燃料...那麼它是okey,因爲它只是在測試版。 ) – daGrevis 2011-03-27 17:35:40

+0

我在談論任何框架,它不是簡單地使用PDO提供的非常精心設計的接口,而是使用一些使用mysqli/mysql的重新實現。 – NikiC 2011-03-27 18:28:41

回答

11

你可以用燃油本身做到這一點:

$query = \DB::select('username') 
      ->from('users') 
      ->execute() 
      ->as_array(null, 'username'); 

這將返回到你想要的。

2

做一個foreach循環來轉換它,像這樣:

$arr2 = array(); 
foreach ($arr1 as &$value) { 
array_push($arr2, $value[username]); 
} 
4

沒錯,foreach循環應該做的伎倆:

$new_array = array(); 
foreach($query as $result_num => $sub_array) 
{ 
    $new_array[$result_num] = $sub_array[username]; 
}