无法理解阵列的结构

时间:2017-11-07 08:43:30

标签: php arrays postgresql

我在PostgreSQL / PostGIS数据库中有一个表,我想在php中检索列名及其值,以将它们加载到jquery-datatable中。当我在print_r($row)之后$row=$query->fetchAll()我可以看到print_r的输出为:

           Array ( [0] => Array ( [d_id] => 20160317 [0] => 20160317 [lid] => 1 [1] => 1 [la_val] => 23.094123 [2] => 23.094123 [lo_val] => 37.607672 [3] => 37.607672 [ctime] => 15:10 [4] => 15:10 [tmp_c] => 28.2 [5] => 28.2 [colour] => 90 [6] => 90). 

我可以使用以下方法检索列名:

    $query = $conn->prepare("SELECT * FROM tablename");
    $query->execute();
    $row=$query->fetchAll();
    print_r($row);

    for ($i = 0; $i < $query->columnCount(); $i++) {
        $col = $query->getColumnMeta($i);
        $columns[] = $col['name'];
        print_r($columns[$i]." "); // d_id lid la_val lo_val

但是,我无法理解阵列结构。

1 个答案:

答案 0 :(得分:0)

阵列是二维的。外部数组有一个数字索引,表示记录(如您所谓的fetchAll(),您可以获得多行)。内部数组实际上是两个的组合:一个使用列号作为键,另一个使用列名。这是因为fetch()fetchAll()的默认选项为PDO::FETCH_BOTH,相当于PDO::FETCH_NUM | PDO::FETCH_ASSOC。因此,您可以使用不同的数组键获取每个列值两次。