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

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

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

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

Q&A

解決済

1回答

6537閲覧

PHPで、ファイルを読み込み、explodeで分割し、ループさせ表示したいが、分割がうまくいかない。

MakotoIshizawa

総合スコア32

PHP

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

0グッド

0クリップ

投稿2019/07/19 08:28

編集2019/07/19 09:28

やりたいこと

テキスト配列としてを読み込んで、
且つ文字列で分割してループして表示させたいです。
初心者なので全く見当違いなことをしていたり、うっかりミスがあるのかもしれませんがよろしくお願い致します。

<?php $ardate=explode("<>","番号<>名前<>コメント<>時間"); echo $ardate[1]; echo $ardate[2]; echo $ardate[3]; ?> <br>(ok) <hr> <p>2<>で分割し配列と繰り返しと表示</p> <?php $ardate=explode("<>","番号<>名前<>コメント<>時間"); foreach($ardate as $value){ echo $value ." "; } ?> <br>(ok) <hr> <p>3テキストファイルを配列として読み込み繰り返し表示</p> <?PHP $filename = "tameshi.txt"; $ret_array = file( $filename ); foreach($ret_array as $value1 ){ echo $value1; } ?> <hr> <P>4テキストファイルを読み込み指定文字列で分割して表示</P> <?php $filename = "tameshi.txt"; $ret_array = file( $filename ); $bunkatu = explode( "<>", $ret_array ); foreach($bunkatu as $value2 ){ echo $value2; } ?>     <p>2では分割して表示されている。</p> <p>3で分割しなければ表示される</p> <p>explodeしてくれない<br>何故かarrayと表示される</p>

うまくいかないので、単純なコードから試して行って一個ずつ条件を増やしてテストしていきました。
4番のみうまくいきません。
Arrayとだけ表示されてしまいます。
2番と同じことをファイルを読み込んでやっているはずなのにと思うのですがどこが悪いのかわかりません。

ver_dumpの結果このように表示されました。
$ret_array
rray(5) { [0]=> string(35) "1<>名前<>コメント<>日時 " [1]=> string(32) "1<>名前<>コメント<>日時 " [2]=> string(32) "1<>名前<>コメント<>日時 " [3]=> string(32) "1<>名前<>コメント<>日時 " [4]=> string(31) "1<>名前<>コメント<>日時" }

$bunkatu
array(4) { [0]=> string(1) "1" [1]=> string(6) "名前" [2]=> string(12) "コメント" [3]=> string(7) "日時 " }  
と表示されました。

テキストファイルの中身は以下です
1<>名前<>コメント<>日時
1<>名前<>コメント<>日時
1<>名前<>コメント<>日時
1<>名前<>コメント<>日時
1<>名前<>コメント<>日時

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

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

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

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

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

MakotoIshizawa

2019/07/19 09:06

ありがとうございます。 やってみます。
m.ts10806

2019/07/19 09:12

ただ、結局のところテキストファイルの中身を提示されないと的確な回答にはならないのではと
MakotoIshizawa

2019/07/19 09:15

array(5) { [0]=> string(35) "1<>名前<>コメント<>日時 " [1]=> string(32) "1<>名前<>コメント<>日時 " [2]=> string(32) "1<>名前<>コメント<>日時 " [3]=> string(32) "1<>名前<>コメント<>日時 " [4]=> string(31) "1<>名前<>コメント<>日時" } array(4) { [0]=> string(1) "1" [1]=> string(6) "名前" [2]=> string(12) "コメント" [3]=> string(7) "日時 " }   と表示されました。
m.ts10806

2019/07/19 09:24

あとはループ重ねるだけですね
MakotoIshizawa

2019/07/19 09:30

つまりループさせるコードが間違っていたと言うことですね?
MakotoIshizawa

2019/07/19 10:09

echoでは出せないんでしょうか
MakotoIshizawa

2019/07/22 08:21

解決しました。 「あとはループ重ねるだけですね」の一言がだいぶ後になってから利きました。 ありがとうございました。
guest

回答1

0

ベストアンサー

PHP

1$filename = "tameshi.txt"; 2$ret_array = file( $filename ); 3$bunkatu = explode( "<>", $ret_array[0]); 4foreach($bunkatu as $value2 ){ 5 echo $value2."<br>\n"; 6}

複数行

PHP

1$filename = "tameshi.txt"; 2$ret_array = file( $filename ); 3$bunkatu = array_map(function($x){ 4 return explode( "<>", $x); 5},$ret_array); 6foreach($bunkatu as $value2 ){ 7 foreach($value2 as $value3 ){ 8 echo $value3."<br>\n"; 9 } 10}

投稿2019/07/19 08:35

編集2019/07/19 09:11
yambejp

総合スコア114919

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

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

MakotoIshizawa

2019/07/19 09:04

ありがとうございます。 これで一行は表示されたんですが、ファイルの中身全部を表示したい場合はどうしたら良いでしょうか?
yambejp

2019/07/19 09:12

やっぱり複数行なんですね? 追記しておきました
MakotoIshizawa

2019/07/19 09:25

syntax error, unexpected T_FUNCTION, expecting ') と言われました。 よーく見て探してみましたがわかりません
yambejp

2019/07/22 05:09

何行目にエラーがでているかわかりますか?
MakotoIshizawa

2019/07/22 08:10

arrya_mapの行です。 arrya_mapについても検索して調べたんですがどうしてだめなのかわかりませんでした。 因みに、yamabejpさんのコードをヒントに解決できました。 これからそれを書く予定です。
MakotoIshizawa

2019/07/22 08:45 編集

arrya_mapを除いてexplodeの場所を変えました。 $filename = "tameshi.txt"; $ret_array = file( $filename ); foreach($ret_array as $value3 ){ $value4=explode("<>", $value3) ; foreach($value4 as $value5){ echo $value5."<br>\n"; } } (ちょっと別のところで変数使ってるので新たに別の変数名使いました)  先ほど載せたコード間違っていたので(変数名)修正しました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.47%

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

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

質問する

関連した質問