【问题标题】:CSV From Nested array来自嵌套数组的 CSV
【发布时间】:2016-06-22 00:13:48
【问题描述】:

当使用 Medoo 高级选择时:

$medoo->query('SQL Goes HERE')->fetchAll();

结果以以下结构返回:

Array ( 
    [0] => Array ( 
        [Column 0 name] => "VALUE OF Record 0, Column 0" 
        [0] => "VALUE OF Record 0, Column 0" 
        [Column 1 name] => "VALUE OF Record 0, Column 1" 
        [1] => "VALUE OF Record 0, Column 1"
        ...
        ...
        [Column 99 name] => "VALUE OF Record 0, Column 99" 
        [99] => "VALUE OF Record 0, Column 99"
        ) 
    [1] => Array ( 
        [Column 0 name] => "VALUE OF Record 1, Column 0" 
        [0] => "VALUE OF Record 1, Column 0" 
        [Column 1 name] => "VALUE OF Record 1, Column 1" 
        [1] => "VALUE OF Record 1, Column 1"
        ...
        ...
        [Column 99 name] => "VALUE OF Record 1, Column 99" 
        [99] => "VALUE OF Record 1, Column 99"
        )
    ...
    ...
    ... 
    [99] => Array ( 
        [Column 0 name] => "VALUE OF Record 99, Column 0" 
        [0] => "VALUE OF Record 99, Column 0" 
        [Column 1 name] => "VALUE OF Record 99, Column 1" 
        [1] => "VALUE OF Record 99, Column 1"
        ...
        ...
        [Column 99 name] => "VALUE OF Record 99, Column 99" 
        [99] => "VALUE OF Record 99, Column 99"
        )
)

出于某种原因,每个数组都有一个关联键和索引键值对,而不是 100% 为什么他们以这种方式构建它。有关如何删除所有索引结果并仅保留关联数组的任何建议?

【问题讨论】:

  • with pdo try $row = $stmt->fetch(PDO::FETCH_ASSOC); 虽然我看不到您的查询在哪里,所以只是猜测您使用的驱动程序。
  • I've no idea how fputcsv actually works when it comes to multidimensional arrays 据我所知没有,您应该使用 foreach 遍历顶层,并将$row 输出到文件中。通常就是这样完成的。
  • 我没有使用 PDO,我使用的是 medoo:medoo.in
  • 我有通过顶层的循环,它是如何在我遇到问题的每条记录中推送数据。 (例如,我可以从记录 0 移动到记录 99,但我不确定如何推送第 0 - 99 列中的数据)
  • 使用 foreach 代替,这是什么 $result.length PHP, Javascript ? PHP就是这样count( $result )

标签: php arrays medoo


【解决方案1】:

fetchAll 需要正确填写:

$medoo->query('Query String')->fetchAll(PDO::FETCH_ASSOC);

【讨论】:

    【解决方案2】:

    您可能需要这些方面的东西。这是假设您概述的数据类型是准确的

    $columns = array(array());
    foreach ($arr[0] as $key => $value) {
        if (!is_int($key)) {        
            $columns[0][] = $value;
        }
    }
    
    $rows = array();
    foreach ($arr as $results) {
        $thisRow = array();
        foreach ($results as $key => $value) {
            if (is_int($key)) {
                $thisRow[] = $value;
            }
        }
        $rows[] = $thisRow;
    }
    
    $output = array_merge($columns, $rows);
    

    【讨论】:

    • 根据 ArtisticPoenix 的建议,我选择了非常相似的东西。有时我只是忽略了显而易见的
    猜你喜欢
    • 1970-01-01
    • 2016-03-21
    • 2023-03-15
    • 2014-09-20
    • 2020-09-04
    • 1970-01-01
    • 1970-01-01
    • 2015-08-26
    • 1970-01-01
    相关资源
    最近更新 更多