ここから本文です

phpにて配列からcsvを作成

bec********さん

2013/2/1910:23:11

phpにて配列からcsvを作成

csvファイルを読み込んで配列を作成後、配列を一部編集して上書きがしたいです。

<?php
$file_name = "./user.txt";
$fp = fopen( $file_name, 'r' );
$usrlist = array();
//ユーザーの取得、指定したユーザーを削除
$user = fgetcsv( $fp, 256 );
for ($i = 0; $i <= count($user)-1; $i++)
{
if (strcmp($i,$_POST['no']) == 0)
{
array_push($usrlist,"");
}
else
{
array_push($usrlist,$user[$i]);
}
}
fclose($fp);
//配列からファイル作成
$fp2 = fopen($file_name,"w");
for ($i = 0; $i < count($usrlist); $i++)
{
fputcsv($fp2,$usrlist[$i]);
}
fclose($fp2);
?>

書き込む前に配列を確認したところ、正しく作成できておりました。

しかし、書き込みの際に

Warning: fputcsv() expects parameter 2 to be array, string given in

というエラーが表示されてしまいました。
書き込むところはこのような書き方ではいけないのでしょうか?

閲覧数:
4,858
回答数:
1
お礼:
25枚

違反報告

ベストアンサーに選ばれた回答

プロフィール画像

カテゴリマスター

shimixさん

編集あり2013/2/1910:34:01

>書き込むところはこのような書き方ではいけないのでしょうか?

RTFM.
http://php.net/manual/ja/function.fputcsv.php

第二引数は配列でないといけません(エラーメッセージもそうなっていますよね)。fgetcsvが「配列に」読み込むのと同様、fputcsvは「配列を」書き込みます。

たとえ「ひとつしか項目がない」のだとしても

fputcsv($fp2, array($usrlist[$i]));

とする必要があります(それ以前にfputcsvを使う意味がありませんけどね)。


提示されたソースでは1行しか読んでいないようです。その1行にカンマ区切りで格納している状態でしょうかね・・・。
もしそうであれば書き込む方も

$fp2 = fopen($file_name,"w");
fputcsv($fp2,$usrlist);
fclose($fp2);

だけでいいのでは?

#行と列を入れ替えたいなら別ですが(汗

質問した人からのコメント

2013/2/19 10:37:10

お手数おかけしました。

サンプルにあげていただいたコードで修正いたしました。

この質問につけられたタグ

みんなで作る知恵袋 悩みや疑問、なんでも気軽にきいちゃおう!

Q&Aをキーワードで検索:

Yahoo! JAPANは、回答に記載された内容の信ぴょう性、正確性を保証しておりません。
お客様自身の責任と判断で、ご利用ください。
本文はここまでです このページの先頭へ

「追加する」ボタンを押してください。

閉じる

※知恵コレクションに追加された質問は選択されたID/ニックネームのMy知恵袋で確認できます。

不適切な投稿でないことを報告しました。

閉じる