Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/247.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_Csv - Fatal编程技术网

Php 我得到的csv的结构是不正确的

Php 我得到的csv的结构是不正确的,php,csv,Php,Csv,我正在尝试用PHP从另一个CSV创建一个新的CSV 我得到的结果是我所需要的,除了CSV的组织 我不需要标题,我需要按列分隔字段 我想得到这样的东西: A B C T4004XDUHF210 14.55 40 我得到: A article_id,2.50,availability T4004XDUHF210,14.55,40 MSME10/1-ZS10,14.64,58 R3506XKIKT501,14.86,49

我正在尝试用PHP从另一个CSV创建一个新的CSV

我得到的结果是我所需要的,除了CSV的组织

我不需要标题,我需要按列分隔字段

我想得到这样的东西:

      A           B      C
T4004XDUHF210   14.55   40
我得到:

          A
article_id,2.50,availability

T4004XDUHF210,14.55,40

MSME10/1-ZS10,14.64,58

R3506XKIKT501,14.86,49

T3506XDUHF207,14.86,40

R4103504XKIKT602,14.86,40
我的PHP代码:

$outputfp = fopen('new.csv', 'w');

if (($inputfp = fopen("temp/tmp/138702_fr.csv", "r")) !== FALSE) {

while (($data = fgetcsv($inputfp, 1000, "|")) !== FALSE) {

        $line = array();
        // SKU
        $line[]=$data[1];
        // Price
        $price_calcul=(($data[4]*0.20)+$data[4])+2.5;
        $line[] = number_format($price_calcul,2); 
        // Quantity
        $line[]=$data[9];

        fputcsv($outputfp, $line);

        }

    // Clean up
    fclose($inputfp);
    fclose($outputfp);
}

因此,我不需要文章id,2.50,可用性,我想要用制表符分隔

我注意到您需要在以下方面进行更改:

<?php
$outputfp = fopen('new.csv', 'w');

if (($inputfp = fopen("temp/tmp/138702_fr.csv", "r")) !== FALSE) {
    $i = 0;            // <-- Add this line
    while (($data = fgetcsv($inputfp, 1000, "|")) !== FALSE) {
        $i++;          // <-- Add this line

        if ($i == 1) { //
            continue;  // <-- Add these lines
        }              //

        $line = array();
        // SKU
        $line[]=$data[1];
        // Price
        $price_calcul=(($data[4]*0.20)+$data[4])+2.5;
        $line[] = number_format($price_calcul,2); 
        // Quantity
        $line[]=$data[9];

        fputcsv($outputfp, $line, "\t"); // <-- Change this line
    }

    // Clean up
    fclose($inputfp);
    fclose($outputfp);
}
?>


您应该标记适当的语言。对不起,您的意思是什么?我知道我标记了PHP,但我忘了^^所以您不需要CSV(CSV中的“CS”表示“逗号分隔”)。你想要固定大小的字段还是要制表符分隔的?我想要的只是制表符分隔的字段(对不起我的解释),我来自法国;)我不想要商品id,2.50,可用性你接近了,我没有拿到第一行,没关系,我是说商品id,2.50,可用性。但是字段没有分开,我想要例如T4004XDUHF210(A)14.55(B)40(C)。请看这张图片:如果目标是在Excel中打开它,并让Excel自动识别它是以制表符分隔的,请将输出文件的
.csv
扩展名更改为
.tab
扩展名。谢谢您的回答,如果我更改扩展名,则输出将为空。我该怎么办?