2017-03-17 5 views
0

を得る:上記の例では、次のように私はいくつかの指標のCSV 1つの基礎からデータを取得しています同じ値を持つ行1列

$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); 
    } 

を私はSTATインデックス306からデータを取得していますが、それはないです私のための良いアプローチは、最初の列に値 "Bestand"を持つ行を取得するだけです。例については

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

これらは私のcsvファイル内の実際の行は、実際のcsvファイルで、私は重複行を得たcsvファイルをフィルタリングした後、4番目の列をチェックしています。行の

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 

だから私はちょうど私が助けてくださいことを得ることができますどのように彼らの最初の列の値「Bestand」を持っている行をしたいです。ここで

+0

あなたが意味するか: 'IF($ all_elements [0] == "Bestand"){//それを維持しますか}'?あなたが 'if'の後ろまたは' foreach'の内側に行をフィルタリングするかどうかはわかりません。 – mickmackusa

+0

まだすべてのデータを表示.. – Shoaib

+0

私は '$ getData [0]'と '$ all_elements'のサンプルをいくつか見せてください。あなたの質問に直接この情報を編集してください。 – mickmackusa

答えて

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); 
} 
+0

それはうまくおかげでおかげ:) – Shoaib

+0

今は重複した値を表示しています – Shoaib

+0

私は更新した質問を確認してください – Shoaib

関連する問題