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

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

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

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

コードレビュー

コードレビューは、ソフトウェア開発の一工程で、 ソースコードの検査を行い、開発工程で見過ごされた誤りを検出する事で、 ソフトウェア品質を高めるためのものです。

配列

配列は、各データの要素(値または変数)が連続的に並べられたデータ構造です。各配列は添え字(INDEX)で識別されています。

Q&A

解決済

3回答

935閲覧

配列を文字列変換した後の空白と改行コードの削除がうまくいかない。

panp

総合スコア12

PHP

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

コードレビュー

コードレビューは、ソフトウェア開発の一工程で、 ソースコードの検査を行い、開発工程で見過ごされた誤りを検出する事で、 ソフトウェア品質を高めるためのものです。

配列

配列は、各データの要素(値または変数)が連続的に並べられたデータ構造です。各配列は添え字(INDEX)で識別されています。

0グッド

0クリップ

投稿2020/10/10 10:06

編集2020/10/11 05:05

前提・実現したいこと

配列を文字列変換した後の空白と改行コードの削除がうまくいかない。
chromeで期待される出力のコードを確認すると以下のようになっている。

"1700 30" <br> "1200 80" <br> "900 110" <br> "900 10" <br> "800 20"

発生している問題・エラーメッセージ

しかし、私の書いたコードでは、chromeでこのようになってしまう。

"1700 30" <br> "1200 80" <br> "900 110" <br> "900 10" <br> "800 20 " <br>

20のあとに空白と改行コードがついてしまう。
trimをつかえばよいとネットに書いてあるが効果はなかった。

該当のソースコード

入力値
2000 5
300
500
300
100
100

while ($input_line = fgets(STDIN)) { $tmp[] = trim($input_line); } $line=$tmp[0]; $line2=explode(' ',$line); $line2[1]; $zan=$line2[0]; $point=0; for ($i=1; $i<=$line2[1]; $i++) { if($point<$tmp[$i]){ $point+=$tmp[$i]*1/10; $zan=$zan-$tmp[$i]; } if($point>=$tmp[$i]){ $point-=$tmp[$i]; } $answer[]=$zan.' '.$point; } $answer2=implode(PHP_EOL,$answer); $answer2=trim($answer2); echo $answer2;

$answerの中身
array (
0 => '1700 30',
1 => '1200 80',
2 => '900 110',
3 => '900 10',
4 => '800 20',
)

ちなみに
$answer2=implode("a",$answer);
とやると、chromeでソースを確認すると
"1700 30a1200 80a900 110a900 10a800 20 "<br>

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

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

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

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

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

m.ts10806

2020/10/10 10:09

>改行コード はコードからすると \r\n,\r,\n のようですが、 合ってますか?
m.ts10806

2020/10/10 10:10

一応、「結果」もマークダウンのコードにしてください。
m.ts10806

2020/10/10 10:10

あと、元となるテキスト$answerの値も提示してください。
panp

2020/10/10 10:21

PHP_EOLで指定したら、HTML上では<br>とでました。
m.ts10806

2020/10/10 10:34

>$answerの中身 var_dump()だとそのままコードで使えないのでvar_export()にしてください。 >HTML上では<br>とでました。 PHPを実行しているOSは何でしょうか。
m.ts10806

2020/10/10 10:38

ちなみに提示のデータで提示のコードで実行してみた結果は下記です。 https://paiza.io/projects/-kRqNjpyYzxHoSSRO_4Z3w <br>はあくまでHTMLタグであって改行コードではないので、提示のコードで<br>が出ることはあり得ません。
panp

2020/10/10 11:00 編集

期待する出力 1700 30 1200 80 900 110 900 10 800 20 あなたのコードの出力 1700 30 1200 80 900 110 900 10 800 20 見た目ではおなじなのですが、改行や空白のせいで答えが一致しないです。
panp

2020/10/10 11:01

windowsです。
m.ts10806

2020/10/10 11:02

コード全体提示いただけますか? 現状のままだとほぼ進みません。
panp

2020/10/10 11:08

以下の配列を array ( 0 => '1700 30', 1 => '1200 80', 2 => '900 110', 3 => '900 10', 4 => '800 20', ) 期待する出力のように表示したいです。 1700 30 1200 80 900 110 900 10 800 20 配列を文字列に直すところでつまずいているのだと思います。
m.ts10806

2020/10/10 11:10

今言えるのは「改行や空白に依存しないデータの形式で送信・取扱いしては」くらいです。
m.ts10806

2020/10/10 11:24

問題にしているのは、どこにもpタグやbrタグが書かれていないPHPコードです。HTMLだけの話なら回答すぐできます。
panp

2020/10/10 11:37

pタグなどはchromeで右クリックからの検証でコードをみています。
panp

2020/10/10 11:53

pタグが混乱させてしまったようでした。すみません
guest

回答3

0

自己解決

<?php ?>のあとに空白などが入ってしまっていたことが原因だったみたいです。説明がうまくいかないなか、対応してくださり、ありがとうございました。

投稿2020/10/12 13:58

panp

総合スコア12

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

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

0

print_r($answer)

の結果はどうなりますか?

最後だけ何か入っているような気がします。

投稿2020/10/10 13:26

yshima1129

総合スコア179

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

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

panp

2020/10/10 14:14

<p>Array<br>(<br> [0] =&gt; 1700 30<br> [1] =&gt; 1200 80<br> [2] =&gt; 900 110<br> [3] =&gt; 900 10<br> [4] =&gt; 800 20<br>)<br> <br> </p> です。 implodeすると空白が入ってしまうものなのでしょうか?
yshima1129

2020/10/10 14:30

>implodeすると空白が入ってしまうものなのでしょうか? いや、そんなことはないと思いますが・・・。 配列は問題なさそうですね。
yshima1129

2020/10/10 14:39

echo implode('<br>',$answer); これだとどうですか?
panp

2020/10/10 15:25

"1700 30&lt;br&gt;1200 80&lt;br&gt;900 110&lt;br&gt;900 10&lt;br&gt;800 20 " となります。なぜか20のあとに空白が入ってしまうのが不思議です、、
yshima1129

2020/10/12 13:38 編集

<p>Array<br>(<br> [0] =&gt; 1700 30<br> [1] =&gt; 1200 80<br> [2] =&gt; 900 110<br> [3] =&gt; 900 10<br> [4] =&gt; 800 20<br>)<br> <br> </p> ↑の「<br> <br> </p>」に違和感を感じます。 出力結果がバラバラなので、何か混ざっているのではないでしょうか? 本当に「echo implode('<br>',$answer);」のみを実行していますか? 疑ってすいません。 あと、以下を実行するとどうなりますか? $temp_array = implode('<br>',$answer); print_r($temp_array); これで原因の特定ができなければ、あきらめモードです。
panp

2020/10/12 13:59

根本的な部分を疑うきっかけになりました!ありがとうございます。
guest

0

最後に<br>つけたくないなら単純に<br>でimplodeすれば良いのでは。

php

1<?php 2$answer = array ( 30 => '1700 30', 41 => '1200 80', 52 => '900 110', 63 => '900 10', 74 => '800 20', 8); 9 10echo '<p>'.PHP_EOL; 11echo implode('<br>'.PHP_EOL,$answer); 12echo '</p>'.PHP_EOL;

投稿2020/10/10 11:25

m.ts10806

総合スコア80875

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

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

panp

2020/10/10 12:31

echo implode('<br>'.PHP_EOL,$answer); "1700 30" <br><br> "1200 80" <br><br> "900 110" <br><br> "900 10" <br><br> "800 20 " <br> となってしまいます。。
m.ts10806

2020/10/10 20:56

ならないから困っています。コード全部出してください
panp

2020/10/12 13:59

ありがとうございました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問