CSVファイルを更新する処理
CSVに追加や削除、一覧表示、更新をする処理を書いたのですが
更新処理だけうまくいかずに躓いています。
readメソッドのreturn $files;のところで下記の
syntax error, unexpected '$files' (T_VARIABLE)というエラーが出てしまいます。
なぜエラーが出ているか教えていただけるとありがたいです。
<?PHP
function con($hantei, $num, $name, $age, $address){
$data = [
$num,
$name,
$age,
$address
];
$datas = [$data];
// 追加
if($hantei === 'add'){
$fp = fopen('data.csv', 'a');
foreach($datas as $data) {
$line = implode(',' , $data);
fwrite($fp, $line . "\n");
}
fclose($fp);
//更新
} elseif ($hantei === 'update') {
function read() {
$FILENAME = 'data.csv';
$file = fopen($FILENAME, 'r');
while($data = fgetcsv($file)) {
$files[] = $data;
}
fclose($file);
return $files;
}
function replace($num, $name, $age, $address) {
// read()
$files = read();
$arr = array();
foreach($files as $key => $el) {
// [0][a, b, c, d]
// [1][a, b, c, d]
if ($el[0] == $num) {
// $arr[0][0] = $num ...
$arr[$key] = array($num, $name, $age, $address);
} else {
$arr[$key] = array($el[0], $el[1], $el[2], $el[3]);
}
}
return $arr;
}
replace();
function write($arr){
$FILENAME = 'data.csv';
$file = fopen($FILENAME, 'w');
foreach ($arr as $v) {
fputcsv($file,$v);
}
fclose($file);
}
$arr = replace($num, $name, $age, $address);
write($arr);
//削除
} elseif ($hantei === 'dalete') {
$file = file('data.csv');
unset($file[$num]);
file_put_contents('data.csv', $file);
//一覧表示
} elseif ($hantei === 'list') {
$fp = fopen('data.csv', 'r');
$readed = fread($fp, filesize('data.csv'));
print_r($readed);
fclose($fp);
}
}
con('update', 1, 'name', 3, 'address');
補足
ご回答ありがとうございます! foreach ($value as $key2 => $value2) { $value[$key2] = str_replace('"', '""', $value2); } ここで、値を、"""test"""のようにしていると思いますが、 $csv_output .= "\"" . $value["create_datetime"] . "\","; ここで、さらに、""""test"""" のようにしているという認識であっていますでしょうか。