2010-05-07 51 views
0

從mysql結果集中提取列的最佳方式是什麼?我的結果集是這樣的:如何從mysql結果集中提取列?

[0] = ('id'=>1, 'name'=>a), 
[1] = ('id'=>2, 'name'=>b), 
[2] = ('id'=>3, 'name'=>c) 

我該如何從這個數組中提取'name'列?我可以使用for循環。但想知道是否有更好的可重用解決方案?

+1

你需要id列嗎?爲什麼不告訴查詢只提取名稱列? – karim79 2010-05-07 20:29:33

+0

@ karim79:這是簡化的虛擬結果集。 – understack 2010-05-07 20:34:55

+0

@understack - 有你,對不起評論。 – karim79 2010-05-07 20:38:41

回答

3

您可以使用array_map來執行此操作。

function getName($elem) { 
    return $elem['name']; 
} 
$names = array_map('getName', $input); 

// PHP 5.3.0 or higher allows anonymous functions 
$names = array_map(function($e) { return $e['name']; }, $input); 
+0

+1,這個*或*'array_walk'應該是要走的路,'array_map'然而稍微容易使用。 – karim79 2010-05-07 20:38:10

+0

'array_map'不會銷燬原始數組... Walk將... http://php.net/manual/en/function.array-walk.php是'array_walk'的文檔頁面 – gnarf 2010-05-07 20:39:28

1
$rows = array(
array('id'=>1, 'name'=>'a'), 
array('id'=>2, 'name'=>'b'), 
array('id'=>3, 'name'=>'c') 
); 


$names = array();  
foreach ($rows as $row) { 
$names[] = $row['name']; 
} 

使用一個簡單的循環會比使用類似array_map(會導致更多的開銷)快得多。速度差異可能高達100%。