このコードは機能しますが、PHPに関する限られた知識と一緒にハッキングしただけで、よりエレガントで効率的な方法があると確信しています。私がどのように改善できるかを指摘してくれるとしたら、それは素晴らしいことです!
したがって、次のように構造化されたCSVファイルがあります。
Code Class Value Status Date Created Date Redeemed
========================================================================
a51f3g45 gold 50 valid 2012-08-20
4f6a2984 silver 200 redeemed 2012-08-23 2012-08-27
gf3eb54b gold 150 valid 2012-08-30
etc...
ユーザーはフォームに入力して、特定の行の[クラス]、 [値]、および[ステータス]フィールドを変更します。次のコードを組み合わせて、古い値を新しい値に置き換えました。
$file = 'codes.csv';
$old_csv_string = file_get_contents($file);
preg_match('/('.$_POST['code'].',.*,.*,.*,.*,.*)\n/',$old_csv_string,$matches);
$old_row = $matches[1];
preg_match('/'.$_POST['code'].',(.*,.*,.*),.*,.*\n/',$old_csv_string,$matches_part);
$old_row_part = $matches_part[1];
$new_row_part = $_POST['class'].",".$_POST['value'].",".$_POST['status'];
$new_row = str_replace($old_row_part,$new_row_part,$old_row);
$new_csv_string = str_replace($old_row,$new_row,$old_csv_string);
file_put_contents($file,$new_csv_string);
では、10行よりも優れたコードを実行できますか?アドバイスをいただければ幸いです:)
注:を使用してみfgetcsv
ましたが、2D配列内で一意のコードを見つけて、その兄弟を置き換える方法がわかりませんでした。