質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
CSV

CSV(Comma-Separated Values)はコンマで区切られた明白なテキスト値のリストです。もしくは、そのフォーマットでひとつ以上のリストを含むファイルを指します。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Q&A

1回答

2088閲覧

PHP CSV指定した行を削除

hello_mate

総合スコア21

CSV

CSV(Comma-Separated Values)はコンマで区切られた明白なテキスト値のリストです。もしくは、そのフォーマットでひとつ以上のリストを含むファイルを指します。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

0グッド

0クリップ

投稿2019/08/27 14:14

指定した行を削除しようとしています。
削除前はこのように入っており

CSV

11,Mike,Mike@gmail.com,hello 22,John,John@gmail.com,hello 33,Peter,Peter@gmail.com,hello 44,Sam,Sam@gmail.com,hello

もし2行目の2,John,John@gmail.com,helloを削除しよう値すると
$new_data[]に2行目以外の行が入っているのは確認しています。
それをvar_dump($new_data)で確認すると
array(3)
{[0]=> array(4){[0]=> string(1) "1" [1]=> string(4) "Mike" [2]=> string(14) "Mike@gmail.com" [3]=> string(5) "hello " }
[1]=> array(4) {[0]=> string(1) "3" [1]=> string(5) "Peter" [2]=> string(15) "Peter@gmail.com" [3]=> string(5) "hello " }
[2]=> array(4) {[0]=> string(1) "4" [1]=> string(3) "Sam" [2]=> string(13) "Sam@gmail.com" [3]=> string(16) "hello" } }

と入力されています。

削除の考え方で行くと
この後に、CSVファイルへ書き込むという認識で良いのでしょうか?
また、下記のPHPコードで行ってみると
Array to String Conversion in fwrite($fp, "\n".$result);
となってしまいます。

お手数ですが、対処方法のご教授よろしくお願いいたします。

PHP

1<?php 2 session_start(); 3 $filename = 'Board.csv'; 4 5 if($_SERVER['REQUEST_METHOD'] === 'POST'){ 6 $delete_id = $_POST['delete_id']; 7 //var_dump($delete_id); 8 if (is_readable($filename) === TRUE){ 9 if (($fp = fopen($filename,'r+')) !== FALSE){ 10 $count = 1; 11 while (($tmp = fgets($fp)) != FALSE){ 12 $data = $tmp; 13 if($delete_id != $count){ 14 $new_data[] = $data; 15 } 16 $count++; 17 } 18 foreach($new_data as $line){ 19 $result[] = explode(',',$line); 20 fwrite($fp, "\n".$result); 21 } 22 var_dump($result); 23 fclose($fp); 24 } 25 } 26 } 27?>

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

PHPマニュアルの通り、第2引数はstringでなければなりません。
が、配列を突っ込んでいるので提示のエラーになっています。
explode()も$result[]のように配列で受ける必要もないのではないでしょうか。

あと、

fwrite($fp, "\n".$result);

改行コードは前より後ろにつけたほうが良いと思います。

投稿2019/08/27 14:18

m.ts10806

総合スコア80765

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問