こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

ファイルの配列を読んで新しいファイルに配列を追記する

下記はファイル"userdata"を読んでファイル"new_userdata"に
必要な配列の要素を追記するコードです、
変数$fprは全角の文章が入っていますが、ファイル"new_userdata"にこの変数のみ追記できません。

<?php
$filex = "userdata";
$nfile = "new_userdata";
$file = fopen ( $filex, "r" );
while ( $arry = fgetcsv( $file, 1000, "," )){ $dcsv[] = $arry; }
fclose ( $file );
foreach ( $dcsv as $line ) {
list ($fmain_no,$fname,$fpasswd,$fmail,$fmldisp,$fsex,$fage,$fadrs,$ftitle,$fpr,$fphoto,$fdate_write,$x) = $line;
$array = compact ( "fmain_no", "fname", "fpasswd", "fmail", "fmldisp", "fsex", "fage", "fadrs", "ftitle", "$fpr", "fphoto", "fdate_write" );
$string = implode ( ",", $array);
$filez = fopen( $nfile, "a" ) or die ( "$nfile エラー" );
fputs ( $filez, $string."\n" );
fclose ( $filez );
}
?>
よろしくお願いします。

投稿日時 - 2010-03-17 18:59:56

QNo.5759566

困ってます

質問者が選んだベストアンサー

なんだって、わざわざcompact() を使うのか解らないが、そのせいで、よけいなバグを作っているように見受ける
"ftitle", "$fpr"
この2つの違いが解れば、原因も分かるでしょう。
でも、$lineの最後の要素だけのぞきたいなら、array_pop($line) で十分だと思うけど。

投稿日時 - 2010-03-17 23:12:43

お礼

回答ありがとうございます、
$fpr fpr を間違っていました。
array_pop($line) も考えて見ます。

投稿日時 - 2010-03-18 08:16:37

ANo.2

このQ&Aは役に立ちましたか?

4人が「このQ&Aが役に立った」と投票しています

回答(2)

ファイル"userdata" の文字コードとPHPスクリプトの文字コードは合致していますか?
念のため、スクリプトの冒頭で、関数 mb_internal_encoding(http://jp2.php.net/manual/ja/function.mb-internal-encoding.php)を使ってPHPの方の文字コードをファイルに合わせてみてください。

投稿日時 - 2010-03-17 20:25:11

あなたにオススメの質問