Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/266.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何将数组写入csv文件?_Php_Curl - Fatal编程技术网

Php 如何将数组写入csv文件?

Php 如何将数组写入csv文件?,php,curl,Php,Curl,我生成一个包含多个变量的数组,并希望将其完全写入csv文件中。标头工作正常,但仅从数组/\n/“()写入csv 如果在echo之前使用内爆,则会得到一条空行。 怎么了?这是我目前使用的代码: <?php function scrape_between($data, $start, $end){ $data = stristr($data, $start); $data = substr($data, strlen($start));

我生成一个包含多个变量的数组,并希望将其完全写入csv文件中。标头工作正常,但仅从数组/\n/“()写入csv

如果在echo之前使用
内爆
,则会得到一条空行。 怎么了?这是我目前使用的代码:

<?php

    function scrape_between($data, $start, $end){
        $data = stristr($data, $start); 
        $data = substr($data, strlen($start)); 
        $stop = stripos($data, $end); 
        $data = substr($data, 0, $stop); 
        return $data; 
    }

    function curl($url) {

        $options = Array(
            CURLOPT_RETURNTRANSFER => TRUE, 
            CURLOPT_FOLLOWLOCATION => TRUE,
            CURLOPT_AUTOREFERER => TRUE,
            CURLOPT_CONNECTTIMEOUT => 120,
            CURLOPT_TIMEOUT => 120,
            CURLOPT_MAXREDIRS => 10,
            CURLOPT_USERAGENT => "Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.1a2pre) Gecko/2008073000 Shredder/3.0a2pre ThunderBrowse/3.2.1.8",  // Setting the useragent
            CURLOPT_URL => $url, 
        );

        $ch = curl_init(); 
        curl_setopt_array($ch, $options); 
        $data = curl_exec($ch);
        curl_close($ch);   
        return $data; 
    };

    $header = 'date1,date2,contractcode,exchange,region,commoditycode,openint,noncomlong,noncomshort,noncomspread,comlong,comshort,';
    echo($header);

    $scraped_page = curl("https://www.cftc.gov/dea/newcot/deafut.txt");   
    $scraped_wheat = scrape_between($scraped_page, "WHEAT-SRW - CHICAGO BOARD OF TRADE", "CONTRACTS");
    $scraped_wheat = preg_replace('/",/', '', $scraped_wheat); 
    $pieces = explode('WHEAT', $scraped_wheat);  
    $items = explode(",",$pieces[0]); 
    $tmp = 0;
    foreach ($items as $value)if ($tmp++ < 12) {
    $value = preg_replace('/\s/', '', $value);
    echo ($value.",");

    };
    $file = 'cot-zw.csv';
    file_put_contents($file, $header.'/\n/'.$value.",");

?>  
file\u put\u contents()
是一种非常粗糙的csv写入方式

我建议使用
fputcsv()
。下面是一个非常简单的示例:

<?php
$csv_items = [
    ['row1-col1','row1-col2','row1-col3'],
    ['row2-col1','row2-col2','row2-col3'],
    ['row3-col1','row3-col2','row3-col3']
];

if( $fh = fopen('file.csv','w') ){

    foreach( $csv_items as $csv_item ){
        fputcsv($fh, $csv_item);
    }

    fclose( $fh );
}

这回答了你的问题吗?为什么这个答案被否决了?使用
fputcsv()
而不是
文件内容()
是最明显的解决方案。很抱歉,这些解决方案没有起到任何作用。(反正我都试过了…)据我所知,
echo($value.,”);
回显整个foreach循环。如何将整个循环放入csv?
<?php
$csv_items = [
    ['row1-col1','row1-col2','row1-col3'],
    ['row2-col1','row2-col2','row2-col3'],
    ['row3-col1','row3-col2','row3-col3']
];

if( $fh = fopen('file.csv','w') ){

    foreach( $csv_items as $csv_item ){
        fputcsv($fh, $csv_item);
    }

    fclose( $fh );
}