【问题标题】:How to put data from 3 external CSVs into arrays (Got the first 2 working, 3rd not)如何将来自 3 个外部 CSV 的数据放入数组中(前 2 个有效,第 3 个无效)
【发布时间】:2017-12-23 17:29:36
【问题描述】:

我正在尝试从 3 个单独的 CSV 中获取数据并将数据放入 3 个单独的数组中,在前 2 个下面的代码中工作正常,第三个是第二个的克隆,但更改了一些细节并没有...为什么?

我怎样才能让第三个也正常工作?

    // First one

    $awd_fp = fopen( 'https://example.com/test1.csv', 'r' );

    $awd_stocks_temp = array();

    while( $awd_row = fgetcsv( $awd_fp ) ) {
        $awd_stocks_temp[] = $awd_row;
    }

    fclose( $awd_fp );

    // Second one

    $aeo_fp = fopen( 'https://example.com/test2.csv', 'r' );

    $aeo_stocks_temp = array();

    while( $aeo_row = fgetcsv( $aeo_fp ) ) {
        $aeo_stocks_temp[] = $aeo_row;
    }

    fclose( $aeo_fp );

    // Third one

    $hb_fp = fopen( 'https://example.com/test3.csv', 'r' );

    $hb_stocks_temp = array();

    while( $hb_row = fgetcsv( $hb_fp ) ) {
        $hb_stocks_temp[] = $hb_row;
    }

    fclose( $hb_fp );

    echo '<hr>';
    echo count( $awd_stocks_temp ) . ' / ';
    echo count( $aeo_stocks_temp ) . '/ ';
    echo count( $hb_stocks_temp );
    echo '<hr>';

【问题讨论】:

  • 您是否检查过您从test3.csv 收到的信息。代码看起来没问题,所以它一定是数据
  • 看起来问题出在 csv 文件上。你检查它是否返回任何错误?
  • 如果我 print_r 我试图使其为空的数组。如果我在浏览器中加载文件,它会下载并包含数据(与第二个文件完全相同)
  • 我已将最后一个请求更改为托管在其他地方并且它有效,因此我认为我的问题的第三个请求可能被阻止,尽管它与第二个有效的托管在同一主机上.. .

标签: php csv fopen fgetcsv


【解决方案1】:

您的代码运行良好,您的 csv 文件似乎有问题。我唯一建议的是不要编写相同的代码来读取 csv 文件,为什么不循环遍历它。

<?php
$files = array(
    'test1.csv',
    'test2.csv',
    'test3.csv'
);
$stocks_temp = array();
$ctr = 0;
foreach($files as $file){
    $fp = fopen( $file, 'r' );
    while( $row = fgetcsv( $fp ) ) {
        $stocks_temp[$ctr][] = $row;
    }
    fclose( $fp );
    $ctr++;
}

// you will get all data in multidimensional array
echo "<pre>";
print_r($stocks_temp);
?>

【讨论】:

    猜你喜欢
    • 2019-06-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-05-25
    • 2013-10-29
    • 2012-04-28
    相关资源
    最近更新 更多