获取具有相同值的行一列

时间:2017-03-17 12:14:49

标签: php forms csv fgetcsv

我从某个索引的csv中获取数据如下:

$filename=$_FILES["file"]["tmp_name"];      


     if($_FILES["file"]["size"] > 0)
     {
        $file = fopen($filename, "r");
        $rowCount = 0 ;
        $secondColumnArray = array();

        while (($getData = fgetcsv($file,  100000, ",")) !== FALSE)
         {
         if($rowCount >=0){

             if(strpos($getData[0],"Bestand")!==false){

             array_push($secondColumnArray, $getData[0]);

               }
             foreach ($secondColumnArray as $all_elements){

                $all_elements_refine = explode(',', $all_elements);

                $new_refine =  $all_elements_refine[0];

                $all_elements_refine1 = explode(';', $new_refine);

                $specialChars = array(" ", "\r", "\n", '"', "*");
                $replaceChars = array("", "", "");
                $all_elements_refine2 = str_replace($specialChars, $replaceChars, $all_elements_refine1);
                 print_r($all_elements_refine2);

             }

         }
                 ++$rowCount;

         }

        //echo "<pre>"; print_r($secondColumnArray);   echo "</pre>"; 
         fclose($file); 
     }

在上面的示例中,我是从索引306获取数据的stat,但这对我来说不是一个好方法我只想获得那些有价值的行&#34; Bestand&#34;在第一栏。

例如:

Row 1:  Bestand , 1 , Hell , World
Row 2:  farb    , 2 , Hell , World
Row 3:  Bestand , 3 , Hell , World

这些是我的csv中的实际行检查实际csv中的第四列,过滤后csv我得到了重复的行。

Bestand   ;000000000;"I";00000000842143;000000000;00000095;009598;00000198;000000000;"MK Sterling mondstein         ";"moonstone           ";000000000;000000000;000000800;"20160525";"*           ";000000100;000000000;000008990;000008990;000008990;1900;"MK Sterling mondstein         "            
Bestand   ;000000000;"I";00000000842144;000000000;00000095;009598;00000198;000000000;"MK Sterling mondstein         ";"moonstone           ";000000000;000000000;000000800;"20160525";"*           ";000000100;000000000;000008990;000008990;000008990;1900;"MK Sterling mondstein         "            
Bestand   ;000000000;"I";00000000842148;000000000;00000095;009598;00000198;000000000;"MK Sterling mondstein         ";"moonstone           ";000000000;000000000;000000800;"20160525";"*           ";000000100;000000000;000008990;000008990;000008990;1900;"MK Sterling mondstein         "            
Bestand   ;000000000;"I";00000000842157;000000000;00000095;009598;00000198;000000000;"MK Sterling mondstein         ";"moonstone           ";000000000;000000000;000000800;"20160525";"*           ";000000100;000000000;000008990;000008990;000008990;1900;"MK Sterling mondstein         "            
Bestand   ;000000000;"I";00000000842158;000000000;00000095;009598;00000198;000000000;"MK Sterling mondstein         ";"moonstone           ";000000000;000000000;000000800;"20160525";"*           ";000000100;000000000;000008990;000008990;000008990;1900;"MK Sterling mondstein         "            
Bestand   ;000000000;"I";00000000842161;000000000;00000095;009598;00000198;000000000;"MK Sterling mondstein         ";"moonstone           ";000000000;000000000;000000800;"20160525";"*           ";000000100;000000000;000008990;000008990;000008990;1900;"MK Sterling mondstein         "            
Bestand   ;000000000;"I";00000000842162;000000000;00000095;009598;00000198;000000000;"MK Sterling mondstein         ";"moonstone           ";000000000;000000000;000000800;"20160525";"*           ";000000100;000000000;000008990;000008990;000008990;1900;"MK Sterling mondstein         "            
Bestand   ;000000000;"I";00000000842346;000000000;00000095;009598;00000198;000000000;"MK Sterling grün              ";"green zirconia      ";000000047;000000000;000000800;"20160525";"*           ";000000100;000000000;000008990;000008990;000008990;1900;"MK Sterling grün              "            
Bestand   ;000000000;"I";00000000842349;000000000;00000095;009598;00000198;000000000;"MK Sterling grün              ";"green zirconia      ";000000047;000000000;000000800;"20160525";"*           ";000000100;000000000;000008990;000008990;000008990;1900;"MK Sterling grün              "            

行重复:

id  A   B   C   D   E   F   G   H   I   J   K   L   M   N   O   P   Q   R   S   T   U   V   W
1   Bestand 000000000   I   00000000842143  000000000   00000095    009598  00000198    000000000   MKSterlingmondstein moonstone   000000000   000000000   000000800   20160525        000000100   000000000   000008990   000008990   000008990   1900    MKSterlingmondstein
2   Bestand 000000000   I   00000000842143  000000000   00000095    009598  00000198    000000000   MKSterlingmondstein moonstone   000000000   000000000   000000800   20160525        000000100   000000000   000008990   000008990   000008990   1900    MKSterlingmondstein
3   Bestand 000000000   I   00000000842144  000000000   00000095    009598  00000198    000000000   MKSterlingmondstein moonstone   000000000   000000000   000000800   20160525        000000100   000000000   000008990   000008990   000008990   1900    MKSterlingmondstein
4   Bestand 000000000   I   00000000842143  000000000   00000095    009598  00000198    000000000   MKSterlingmondstein moonstone   000000000   000000000   000000800   20160525        000000100   000000000   000008990   000008990   000008990   1900    MKSterlingmondstein
5   Bestand 000000000   I   00000000842144  000000000   00000095    009598  00000198    000000000   MKSterlingmondstein moonstone   000000000   000000000   000000800   20160525        000000100   000000000   000008990   000008990   000008990   1900    MKSterlingmondstein

所以我只想要有价值的行&#34; Bestand&#34;在他们的第一栏我怎么能得到它请帮助。

1 个答案:

答案 0 :(得分:1)

这是重写:

$filename=$_FILES["file"]["tmp_name"];
if($_FILES["file"]["size"]>0){
    $file=fopen($filename,"r");
    $rowCount=0;
    $secondColumnArray=[];
    while(($getData=fgetcsv($file,100000))!==false){
        if($rowCount>=306){
            if(strpos($getData[0],"Bestand")!==false){
                array_push($secondColumnArray, $getData[0]);
            }
            foreach($secondColumnArray as $all_elements){
                print_r($all_elements);
            }
        }
        ++$rowCount;
    }
    fclose($file); 
}