web-dev-qa-db-ja.com

PHP、爆縮で改行を追加

改行を追加しようとしています\n、内破を伴う私のforeachステートメントで。

私のコード:

$ga->requestReportData($profileId,array('country'),array('visits')); 
$array = array();
foreach($ga->getResults() as $result){ 
    $array[] = "['".$result->getcountry()."', ".$result->getVisits()."]"; 
} 
echo implode(",\n", $array);

結果の間にコンマとスペースしか表示されません。カンマと改行が必要です。

私はこのようなものを手に入れようとしています:

['国'、 '番号']、

['国'、 '番号']、

['国'、 '番号']

しかし、私はこれを取得します:

['国'、 '番号']、['国'、 '番号']、['国'、 '番号']

\ n改行が発生しないのはなぜですか?

8
user1708580

データをブラウザにエコーしていて、期待どおりに改行が表示されていないことが原因と思われます。インプロードを<pre>タグでラップすると、正しく機能していることがわかります。

さらに、現在のドキュメントによると、引数は implode 関数で逆になっています。ただし、歴史的な理由から、パラメーターはどちらの順序でもかまいません。

$array = array('this','is','an','array');
echo "<pre>".implode(",\n",$array)."</pre>";

出力:

this,
is,
an,
array
18
Andy

クロスプラットフォーム互換性のために、PHP_EOLの代わりに\nを使用してください。

上記の受け入れられた回答の例を使用すると:

$array = array('this','is','another','way');
echo "<pre>".implode(PHP_EOL, $array)."</pre>";

HTMLに直接書き込んでいる場合(ファイルでは機能しません)、次のように<br>を使用するオプションがあります。

$array = array('this','is','another','way');
echo "<p>".implode(<br>, $array)."</p>";

両方の出力:

this, 
is, 
another, 
way
9
boroboris

これも機能します

$array = array('one','two','three','four');
echo implode("<br>", $array);

出力:

one
two
three
four
0
B.K