【问题标题】:convert PDO resultset array to accessible Array PHP将 PDO 结果集数组转换为可访问的数组 PHP
【发布时间】:2014-06-21 20:12:02
【问题描述】:

我正在使用如下 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')

有什么建议吗?

【问题讨论】:

    标签: php mysql arrays pdo


    【解决方案1】:

    如果您运行的是 PHP >= 5.5

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

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

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

    虽然我真的不明白为什么你一开始就不能使用原始数组

    【讨论】:

    • 好答案。但是对于array_map,它可能看起来更优雅,但foreach 循环在这样的事情上工作得更快。
    • @Jake - 我怀疑 OP 想要使用 foreach 循环来呈现结果,并且不了解如何访问多维数组中的值,所以整个问题没有实际意义反正
    • @mark baker .. 无论如何我都没有发现要遍历这个多维数组,因为我必须使用 in_array() 函数来检测值。所以决定通过简单数组
    【解决方案2】:

    您可以使用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
    )
    

    【讨论】:

      【解决方案3】:

      查询方式:

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

      然后你需要检索你将从mysql返回的唯一记录的第一个字段,并将其转换为一个数组:见return group_concat data as array

      【讨论】:

        猜你喜欢
        • 2015-12-13
        • 2012-01-20
        • 1970-01-01
        • 2014-10-18
        • 1970-01-01
        • 2013-05-15
        • 1970-01-01
        • 1970-01-01
        • 2011-11-11
        相关资源
        最近更新 更多