【问题标题】:Convert PDO::FETCH_ASSOC array into indexed array将 PDO::FETCH_ASSOC 数组转换为索引数组
【发布时间】:2018-03-04 22:24:56
【问题描述】:

我有以下代码

 $stmt = $pdo->query("SELECT Name,office FROM `table`");
 $rows = $stmt->fetchAll(PDO::FETCH_ASSOC);
 print_r($rows);

打印以下内容

Array (
    [0] => Array (
        [Name] => Suki Burks
        [office] => London
    )
    [1] => Array (
        [Name] => Thor Walton
        [office] => New York
    )
)

我想要数字索引数组,像这样

Array (
    [0] => Array (
        [0] => Suki Burks
        [1] => London
    )
    [1] => Array (
        [0] => Thor Walton
        [1] => New York
    )
)

我试图为此找到一个 PDO 常量以便我可以像这样使用它

$stmt->fetchALL(PDO::FETCH_INEDXED)

但我认为 PDO 中没有内置方法可以实现这一点,但是实现这一点的好方法是什么?

谢谢

【问题讨论】:

  • 正如manual 中明确指出的那样,您可以使用PDO::FETCH_BOTH 获取关联和数字,或者仅使用PDO::FETCH_NUM 仅获取数字。完整列表可在PDOStatement::fetch() 中找到,如链接的第一个文档中所述。
  • 为什么不作为答案发布@Qirel?
  • 为什么不呢,@Marwelln :-)
  • @Qirel 我已经搜索了 1 个小时,我不明白为什么我没有找到它,非常感谢!!,它有效!
  • 然后改进你的谷歌搜索:D

标签: php arrays pdo


【解决方案1】:

fetchAll() 上的手册说明了第一个参数 fetch_style,如下(强调我的)

控制返回数组的内容PDOStatement::fetch() 中所述。默认值为PDO::ATTR_DEFAULT_FETCH_MODE(默认为PDO::FETCH_BOTH

这意味着对于不同 fetch-styles 可用的完整常量列表,您应该查看 fetch() 文档。这表明对于数字索引数组,您应该使用PDO::FETCH_NUM,它被描述为..

PDO::FETCH_NUM:返回一个数组,该数组由结果集中返回的列号索引,从第 0 列开始

最终结果将如下所示,所有的变化只是作为参数提供给fetchAll() 的常量。

$stmt = $pdo->query("SELECT name,office FROM `table`"); // Singlequotes are for values, backticks for table/column-names
$rows = $stmt->fetchAll(PDO::FETCH_NUM);
print_r($rows);

【讨论】:

  • 我还是找不到 FETCH_NUM,你在哪里找到的? php.net/manual/en/pdostatement.fetchall.php
  • Please see this comment 我在问题下留下的。
  • 我也在答案中写了它,但您会在答案中链接的fetch() 文档中找到常量列表。两种 fetch 方法都是一样的。
  • 感谢您的帮助:)
  • 乐于助人 :-) 就像@Fred 提到的那样,这些引号不是用于表名的 - 它们是用于字符串值的,但看起来这不是您的实际查询。
猜你喜欢
  • 2015-04-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-01-02
  • 1970-01-01
  • 2023-04-02
相关资源
最近更新 更多