将PDO结果集数组转换为可访问的Array PHP

时间:2014-06-21 20:12:02

标签: php mysql arrays pdo

我正在使用如下的PDO语句

$sql1 = "select food_typename from foodtypes WHERE 1";
$statement1 = $pdo->prepare($sql1);
$statement1->execute();
$results1 = $statement1->fetchAll(PDO::FETCH_ASSOC);
print_r($results1);

我的输出如下:

Array
 (
[0] => Array
    (
        [food_typename] => Punjabi
    )

[1] => Array
    (
        [food_typename] => Indian
    )
 )

我希望它像

Array('Punjabi','Indian')

有什么建议吗?

3 个答案:

答案 0 :(得分:2)

如果你正在运行PHP> = 5.5

$results = array_column($results1, 'food_typename');

如果您运行的是早期版本的PHP,

$results = array_map(
    $results1, 
    function($value) {
        return $value['food_typename'];
    }
);

虽然我真的不明白为什么你不能在第一时间使用原始阵列

答案 1 :(得分:0)

您可以使用array_map,但foreach同样适用,实际运行速度比array_map更快,对于以下情况:

// Set a test array.
$results1 = array();
$results1[] = array('food_typename' => 'Punjabi');
$results1[] = array('food_typename' => 'Indian');

// Set the final reults in an array.
$results_final = array();
foreach ($results1 as $results1_value) {
  $results_final[] = $results1_value['food_typename'];
}

// Dump the line array for debugging.
echo '<pre>';
print_r($results_final);
echo '</pre>';

输出结果如下:

Array
(
    [0] => Punjabi
    [1] => Indian
)

答案 2 :(得分:0)

查询方式:

SELECT GROUP_CONCAT(food_typename), 1 AS dummy
FROM foodtypes
GROUP BY dummy 

然后你需要检索你将从mysql返回的唯一记录的第一个字段,然后把它变成一个数组:见return group_concat data as array