2016-04-23 12 views
-1

に存在するかのように、私はcsvファイル内のクライアントのリストをしました確認します。クライアントがすでにリストに存在する場合PHP:値はcsvファイル

Name,Credited 
ABC,Y 
BCD,Y 
XYZ 
ABC 

私のタスクは、チェックすることです:

  • はい、既にクレジットされているかどうかを確認してください。
  • はいの場合は、その名前をリストから削除します。

私はコードを書き始めましたが、私はどのようにして自分の仕事を達成できるのかよくわかりません。

//Store the file in array 
$fcsv = file($files); 
foreach($headers as $header) { 
    // Push headers to new array. 
    array_push($headings, strtolower(trim($header))); 
    } 

助けてもらえますか?クライアントの名前が与えられたCSVファイルに存在する場合には、事前

+0

この変数** $ headers ** ..どこで初期化するのですか? –

+0

Hi Ed:ヘッダーは$ headers = explode( "、"、$ fcsv [0]);で初期化されます。 –

+0

まず、PHPの組み込み[fgetcsv()](http://www.php.net/manual/en/function.fgetcsv.php)関数を使用してください。 –

答えて

0

おかげで、ここでの検索の基本的な実装です。あなたがのvar_dumpを使用して、それを見れば、あなたのcsvファイルに複数の行を含んでいる場合csv

$client = "ABC"; 
$fcsv = file('uploads/task.csv'); 

foreach ($fcsv as $key => $value) { 
    $temp = explode(',', $value); 
    if ($temp[0] == $client) { 
    unset($fcsv[$key]); 
    } 
} 

それぞれの行は、()は、このライン、

"Name,Credited" 

、次のようになり

$fcsv = file('uploads/task.csv'); 

は、loopを使用して各行の内容を分割してexplode(',', $value);を使用して行の配列の列を返します。

上記の例のように、クライアントが存在する場所を比較して削除できるようにするために、必要な列を選択できるようになりました。

+0

彼のファイルにコンマはありません。どうしてコンマを 'explode'で使っていますか? – Barmar

+0

なぜ 'if($ temp [1] == $ client)'をテストしていますか?彼のファイルでは、クライアント名が最初の列であり、2番目の列はクライアントがクレジットされている場合は 'Y'です。 – Barmar

+0

@Barmarに同意します。クライアント名は常に最初の列で、Creditedは2番目の列です。 –

0

ファイル内のすべての行をループし、str_getcsv()を使用してCSV行として解析します。次に、最初の列がクライアント名で、2番目の列がYであることを確認します。

$clients = file($files, FILE_IGNORE_NEW_LINES); 
$deleted = false; 
foreach ($clients as $index => $client_line) { 
    $split = str_getcsv($client_line); 
    if ($split[0] == $client) { 
     if (isset($split[1]) && $split[1] == 'Y') { 
      unset($clients[$index]); 
      $deleted = true; 
     } 
     break; // Stop searching after we found the client 
    } 
} 
// Rewrite the file if we deleted the client. 
if ($deleted) { 
    file_put_contents($files, implode("\n", $clients)); 
} 
+0

@barmarさんへの返信ありがとうございます。私は質問を更新しました。 "、"(コンマ)がファイルにあり、空白ではありません。 –

+0

正規表現の代わりに 'str_getcsv'を使う答えを更新しました。 – Barmar

関連する問題