• 締切済み

join関数について

phpのjoin関数について教えてもらえないでしょうか? $temp = ereg_replace("[\r\n]", "", join( ",", $CsvData[ $i ] ) ). "\n"; アドバイスお願いします。

みんなの回答

  • duckling
  • ベストアンサー率47% (88/185)
回答No.1

join関数の何が知りたいのでしょうか? join は、配列を第一引数で指定した文字を間に挟んで 出力するというもので、 上のやり方で間違いはないと思われるのですが。 $CsvData[$i] が配列じゃないので $CsvData[$i] がまんま$tempに入ってしまって 動作しないと思ってしまっている、 ということでしょうか? $CsvData[$i] がカンマ区切りのデータで それを配列にしたいのにうまくいかない、 ということでしょうか? 前者なら $a = array("a","b","c"); $temp = join(",",$a); で、 $temp = "a,b,c"; になりますよ。 後者なら必要なのは、join関数ではなくsplit関数です。

u-mesh12
質問者

お礼

お礼が送れて申し訳ありませんでした。join関数の用途を知らないで使用していたので、質問させていただきました。説明不足でしたね。 >join は、配列を第一引数で指定した文字を間に挟んで出力するというもので、 アドバイスありがとうございました。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • ereg_replace関数に関して

    教えて下さい。 プログラム上でereg_replace関数を多数使用しています。 この関数は、PHP 5.3.0以上では使えない事がわかり、他の関数に切り替えたいと考えて いますが、書き方がわかりません。 以下の記述をPHP 5.3.0以上で動作させる為には、どのように記述すれば良いでしょうか? 《現在の記述》 $dest=ereg_replace('^', '&gt;' ,$dest); $dest=ereg_replace("\n", "\n>" ,$dest); $dest = ereg_replace("http://[^<>[:space:]]+[[:alnum:]/]", "<a href=\"\\0\">\\0</a>", $src); 初歩的な質問で申し訳ありませんが、教えて下さい。 よろしくお願いします。

    • ベストアンサー
    • PHP
  • php5.3.3でeregをループ内で使用すると

    php5.3.3でeregをループ内で使用すると動作がとまり、エラーログにも何も出力されません。 10回目のループでなぜか動作がとまるようです。 $mail=""; $fp=fopen("php://stdin", "r"); while(!feof($fp)) $mail.=fread($fp, 10240); fclose($fp); $MailArray = explode("\n", $mail); $Counter = 0; $InputCheck = new InputCheck(); for ($i = 0; $i < count($MailArray); $i++){ if (strpos($MailArray[$i], "From: ") === 0){ $From = str_replace("From: ", "", $MailArray[$i]); $From = ereg_replace(">.*$", "", $From); $From = ereg_replace("^.*<", "", $From); $From = ereg_replace("\r", NULL, $From); if(!$InputCheck->isRightEMail($From)){ $i++; $From = str_replace("From: ", "", $MailArray[$i]); $From = ereg_replace(">.*$", "", $From); $From = ereg_replace("^.*<", "", $From); $From = ereg_replace("\r", NULL, $From); } } else if (strpos($MailArray[$i], "To: ") === 0){ $To = str_replace("To: ", "", $MailArray[$i]); $To = ereg_replace(">.*$", "", $To); $To = ereg_replace("^.*<", "", $To); $To = ereg_replace("\r", NULL, $To); if(!$InputCheck->isRightEMail($To)){ $i++; $To = str_replace("To: ", "", $MailArray[$i]); $To = ereg_replace(">.*$", "", $To); $To = ereg_replace("^.*<", "", $To); $To = ereg_replace("\r", NULL, $To); } } } 上記は空メールされたfromとtoを取得するものです。 eregをpregに変えれば問題なく動作します。 5.3以降からeregは非推奨になりましたが、使用することはできるようですが、ループ内で使用するとなぜか動作がそこでストップします。 非推奨の関数を使用すると動作が止まりエラーログにも出力されないことはよくあるのでしょうか? エラーログに出力されなかったため原因を特定するのに苦労しました。 eregなどの非推奨関数を使用した場合の不具合に関してご教示頂けると幸いです。 宜しくお願いいたします。

    • ベストアンサー
    • PHP
  • CSVデータの一部を変換したい

    for( $i = 0; $i < sizeof( $Data ); $i++ ) { $CSV = ereg_replace( "[\r\n]", "", join( ",", $Data[ $i ] ) ). "\n"; とデータをCSVに書き込み、 abcd,2009,04,30,あいうえお efgh,2009,06,15,かきくけこ ・・・ xyz,2009,07,09,らりるれろ となっています。このCSVの日付部分だけを、コンマ区切りでなくハイフンで結び、 abcd,2009-04-30,あいうえお efgh,2009-06-15,かきくけこ ・・・ xyz,2009-07-09,らりるれろ としたいのですが、どのようにすれば宜しいでしょうか?

    • ベストアンサー
    • PHP
  • 文字列内の\nで改行表示させるための置換

    すでに他のかたがNo.7770 でなさった質問によく似ていますが、私の場合と微妙に違いますので、質問させてください。たとえば: $data='i.(h, s) \n1. (馬が)速足(はやあし)で走る \n2. (s)[口]急いでいく, 小走りに走る' この$data 内の「\n」を<Textarea>に改行して表示したいので、文字列置換を $data = ereg_replace("\n", "<BR>", $data); とか $data = ereg_replace("\\n", "<BR>", $data); とか $data = ereg_replace("/\\n/", "<BR>", $data); やってみてますが、どうしもPerl の場合には成功した: $data=~ s/\\n/\n/g; と同じ結果が得られません。表示の末尾に<BR>が出たり、\nのままだったりします。何度も行なわれているような初歩的質問ですが、お願いします。

    • ベストアンサー
    • PHP
  • php 正規表現で、\マークを取り除くには?

    php で ereg_replace関数を使って¥マークを取り除きたいのですが、 ereg_replace("\\", "",$str); と記述すると Warning: ereg_replace() [function.ereg-replace]: REG_EESCAPE in C:\xampp... とエラーになってしまいます。 どうすれば正規表現により円マークを取り除くことができるのでしょうか?

    • ベストアンサー
    • PHP
  • メールの内容が文字化けします・・・

    <? function sendmail($to,$from,$from_name,$title,$message){ /* EUCコードへのエンコーディング */ $to = mb_convert_encoding($to , "EUC-JP","EUC-JP,UTF-8,SHIFT-JIS,ASCII,JIS"); $from = mb_convert_encoding($from , "EUC-JP","EUC-JP,UTF-8,SHIFT-JIS,ASCII,JIS"); $title = mb_convert_encoding($title , "EUC-JP","EUC-JP,UTF-8,SHIFT-JIS,ASCII,JIS"); $message = mb_convert_encoding($message , "EUC-JP","EUC-JP,UTF-8,SHIFT-JIS,ASCII,JIS"); /* 改行コード変換(CR+LFへ変換) */ $to = ereg_replace("\r", "", $to); $to = ereg_replace("\n", "\r\n", $to); $from = ereg_replace("\r", "", $from); $from = ereg_replace("\n", "\r\n", $from); $from_name = ereg_replace("\r", "", $from_name); $from_name = ereg_replace("\n", "\r\n", $from_name); $title = ereg_replace("\r", "", $title); $title = ereg_replace("\n", "\r\n", $title); $message = ereg_replace("\r", "", $message); $message = ereg_replace("\n", "\r\n", $message); /* メールヘッダ生成 */ $header = "From: ".$from_name." <".$from.">\n"; $header .= "Reply-To: ".$from_name." <".$from.">\n"; /* メール本文生成 */ $message = mb_convert_kana($message,"KV"); /* 送信メッセージ言語設定 */ mb_language("Japanese"); /* メール送信処理 */ $rcd = mb_send_mail($to,$title,$message,$header); return $rcd; } ?> 何が原因か分からないのです・・・。 教えていただければ嬉しいですm(__)m

    • ベストアンサー
    • PHP
  • 携帯からメールを送ると文字化け・・・

    PCからメールを送ると正常に表示されてるのに、携帯からだと内容が化けてしまうという現象になってしまいました・・・。 function sendmail($to,$from,$from_name,$title,$message){ /* JISコードへのエンコーディング */ $to = mb_convert_encoding($to, "JIS","EUCJP,UTF-8,SHIFT-JIS,ASCII,SJIS,ISO-2022-JP"); $from = mb_convert_encoding($from, "JIS","EUC-JP,UTF-8,SHIFT-JIS,ASCII,SJIS,ISO-2022-JP"); $title = mb_convert_encoding($title , "JIS","EUC-JP,UTF-8,SHIFT-JIS,ASCII,SJIS,ISO-2022-JP"); $message = mb_convert_encoding($message , "JIS","EUC-JP,UTF-8,SHIFT-JIS,ASCII,SJIS,ISO-2022-JP"); /* 改行コード変換(CR+LFへ変換) */ $to = ereg_replace("\r", "", $to); $to = ereg_replace("\n", "\r\n", $to); $from = ereg_replace("\r", "", $from); $from = ereg_replace("\n", "\r\n", $from); $from_name = ereg_replace("\r", "", $from_name); $from_name = ereg_replace("\n", "\r\n", $from_name); $title = ereg_replace("\r", "", $title); $title = ereg_replace("\n", "\r\n", $title); $message = ereg_replace("\r", "", $message); $message = ereg_replace("\n", "\r\n", $message); /* メールヘッダ生成 */ $header = "From: ".$from_name." <".$from.">\n"; $header .= "Reply-To: ".$from_name." <".$from.">\n"; /* メール本文生成 */ $message = mb_convert_kana($message,"KV"); /* 送信メッセージ言語設定 */ mb_language("Japanese"); /* メール送信処理 */ $rcd = mb_send_mail($to,$title,$message,$header); 分かる方いらっしゃいましたら、よろしくお願いしますm(__)m

    • ベストアンサー
    • PHP
  • [PHP]csvファイルを生成するときのマックの改行対応の方法について

    [PHP]csvファイルを生成するときのマックの改行対応の方法について 現在、phpでcsvファイルを出力しているのですが、Windowsだと旨く改行が反映されるのですが、Macだと旨く行きません。。。 改行は「\n」を使っていましたが、マックの改行コードが「\r」との事なので、「\n\r」としたのですが、旨く反映されないようです。。。 途中は省きますが $csvData .= "A列" . "," . "B列" . "\n\r"; $csvData .= "a" . "," . "b" . "\n\r"; $csvData .= "c" . "," . "d" . "\n\r"; として、マックでオープンオフィスを使用して開くと、 A列,B列a,bc,d と1行で出て来てしまします。 よろしくお願いします。

    • ベストアンサー
    • PHP
  • 単純挿入法を入れたいんですけど・・・

    #include <iostream> #include <iomanip> #include <cstdlib> //rand関数を使うので using namespace std; void Sort(int *s, int n); //プロトタイプ int main() { const int N = 100; int a[N], i, r, temp; for(i = 0; i < N; i++) a[i] = i; for(i = 0; i < N; i++){ r = rand() % N; temp = a[i]; a[i] = a[r]; a[r] = temp; } cout << "整列前\n----\n"; for(i = 0; i < N; i++) cout << setw(4) << a[i]; cout << '\n'; Sort(a, N); cout << "整列後\n----\n"; for(i = 0; i < N; i++) cout << setw(4) << a[i]; cout << '\n'; return 0; } void Sort(int *s, int n) { //この部分を補って完成させること }

  • C++でcsvファイルから文字列を取得するのに

    C++でcsvファイルから文字列を取得するというものを作っているのですが、うまく取り出すことができません。ファイルはオープンできて、文字列にも分けられているのだとは思うのですが、どこのデータを表示させても"1aa"としか表示されません。なにも格納されていない所は"1aa"とは表示されず空白ですが。 以下に取り出す際使用しているコードを記載するので、うまい具合にいくアドバイスがありましたらお願いします。 ↓で格納させる場所を作っています。 typedef struct { char* Input; char* Output; char* AddName; char* Path; char* LED; int VS; char* Title; char* Copy; } csvdata_t; csvdata_t csvdata[100]として別の場所で宣言してます ↓この関数で格納させています void loadData(){     FILE *fp;    fp = fopen(csvTitle,"r");//ここでのファイルパスは通っています    int n,num,i;        int input[1024]; char inputc[1024]; for(i = 0; i < 1; i++)//最初の1行読み飛ばす while(fgetc(fp) != '\n'); n = 0; num = 0; while(1){ for(i = 0;i < 64; i++){ inputc[i] = input[i];// = fgetc(fp);//1文字取得する input[i] = fgetc(fp); if(inputc[i] == '/'){//スラッシュがあれば while(fgetc(fp) != '\n');//改行までループ i = -1;//カウンタを最初に戻して continue; } if(input[i] == ',' || input[i] == '\n'){//カンマか改行なら inputc[i] = '\0';//そこまでを文字列とし break; } if(input[i] == EOF){//ファイルの終わりなら goto EXFILE;//終了 } } switch(num){ case 0: csvdata[n].Input = inputc;break; case 1: csvdata[n].Output = inputc;break; case 2: csvdata[n].AddName = inputc;break; case 3: csvdata[n].Path = inputc;break; case 4: csvdata[n].LED = inputc;break; case 5: csvdata[n].VS = atoi(inputc);break; case 6: csvdata[n].Title = inputc;break; case 7: csvdata[n].Copy = inputc;break; case 8: break; } num++; if(num == 9){//9まできたら num = 0;//0に戻す n++;//次の行へ } } EXFILE: fclose(fp); }