-1

難しいとは思わないでください。しかし、1 日のハードな作業の後で、私はこの些細な問題を克服することができません。column の値から行をグループ化して、php で表示する必要がある単純な csv ファイルがあります。私たちは具体的に行きます :

これは私のCSVファイルです:

15000,art1,black
15000,art1,white
15000,art1,green
20000,art2,black
20000,art2,white
25000,art3,black

そして、これは私が印刷したいものです:

15000-art1-black
15000-art1-white
15000-art1-green
--- Found black,white,green ---
20000-art2-black
20000-art2-white
--- Found balck,white ---
25000-art3-black
--- Found black ---

私の出発点はこれです:

<?php
$Export= fopen("Test.csv", "r");
while(!feof ($Export)){
    $riga=fgets($Export, 4096);
    if($riga!=""){
        $data=split(',',$riga);
        foreach ($data as $line) {
            $val = explode(",", $line); 
            $code       =   $val[0];
            $art_n      =   $val[1];
            $color      =   $val[2];
        }
    }
}
fclose($Export);
?>
4

2 に答える 2

1
<?php 

if (($handle = fopen("Test.csv", "r"))) {
    $lines = array();
    while (($columns = fgetcsv($handle))) {

        $number = $columns[0];
        $colour = $columns[2];

        if (!isset($lines[$number])) {
            $lines[$number] = array('instances' => array(), 'colours' => array());
        }

        $lines[$number]['instances'][] = $columns;
        $lines[$number]['colours'][$colour] = 1;
    }

    fclose($handle);

    foreach ($lines as $number => $line) {
        foreach ($line['instances'] as $instance) {
            echo implode('-', $instance) . "\n";
        }
        echo "--- Found " . implode(',', array_keys($line['colours'])) . " ---\n";
    }
}

出力:

15000-art1-black
15000-art1-white
15000-art1-green
--- Found black,white,green ---
20000-art2-black
20000-art2-white
--- Found black,white ---
25000-art3-black
--- Found black ---
于 2015-03-13T23:11:15.353 に答える