• ベストアンサー

PHP の print_r( ) 関数について

お世話になります。 上記タイトルの関数の出力形式について、添付のスクリーンショットを参考に質問させていただきます。 この関数の使い方などを調べてみると、出力の例として必ず添付写真の赤で囲ったようなものを見ます。 しかしわたしが2次元配列を作って出力したものは緑枠の中のように、内容がよくわかるようなものでなく、ただ連続して出力されています。 print_r( )関数を使うといつもこれです。 赤枠のようにきれいに出力する方法を教えていただきたいと思います。

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

  • ベストアンサー
  • asciiz
  • ベストアンサー率70% (6650/9424)
回答No.1

改行を1スペースに表示しているのは、ブラウザのHTMLレンダリングエンジンです。 例えば、 ---test.html--- Aaa bb ccc dddd. ----ここまで---- と言う内容をブラウザで表示すると、 Aaa bb ccc dddd. と言う一行になります。これは、英文テキストにとって都合の良い仕様なんです。 つまり、print_r の出力としては改行されていますが、そのテキストをHTMLとして解釈するブラウザが、一行に表示してしまっていると。 PHP実行結果が表示されたところで、「ページのソース」を確認してみてください。 改行そのままでブラウザ上に表示したいなら、出力を <pre>~</pre> タグで挟むか、CSSで「white-space:pre」指定をすると良いでしょう。 >white-space 「スペース・改行の表示方法」【CSSリファレンス】 >https://web-designer.cman.jp/css_ref/abc_list/white-space/

papashiroSooke
質問者

お礼

早速にご回答をいただき、有難うございます。 echo "<pre>"; print_r($data); echo "</pre>"; とすることで、きれいに表示されました。 また一つ新しいことを覚えました。 感謝いたします。

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

関連するQ&A

  • print_r以外の出力方法

    print_r以外の出力方法 print_rでは変数を指定しますが、 現在そのページで保持している変数(スコープの違い、配列など一切構わず)をすべて出力、もしくは確認できる関数はあるのでしょうか?

    • ベストアンサー
    • PHP
  • PHP 多次元配列の次要素を返す便利関数

    PHP5を独学中の者です。 1次元や多次元配列を扱ってきて、次元数が決定されていない配列を自作関数に渡す事で、 現在のポイントの次要素を返す便利関数を考案中です。 【関数に求める利点】  ・引き渡した配列の次元数(1~n)に関わりなく、現在のポイントの次要素を返す。 【関数を使用した想定コード】   $e[0][0] = "a1";   $e[0][1] = "a2";   $e[0][2] = "a3"; // $e配列の次要素を取得 $r = 自作関数($e);  ※ 上記コードでは、現在のポイント($e[0][1])の次要素($e[0][2])を、$rに "a3" を返す   $e[0][0][0] = "a1";   $e[0][0][1] = "a2";   $e[0][0][2] = "a3"; // $e配列の次要素を取得 $r = 自作関数($e);  ※ 上記コードでは、現在のポイント($e[0][0][0])の次要素($e[0][0][1])を、$rに "a2" を返す 関数に対して引数を与えたり、色々と試行錯誤中ですが、アドバイス頂ければ嬉しいです。

    • 締切済み
    • PHP
  • print_rで出力した配列データファイルをfile_get_cont

    print_rで出力した配列データファイルをfile_get_contentsでそのまま取り込もうとしましたが、配列としてではなく文字列として取り込んでしまいます。 ひとつの配列にまとまってしまします。 text.php $data=array(1,2,3,4,5); print_r($data); Array ( [0] => 1 [1] => 2 [2] => 3 [3] => 4 [4] => 5 ) output.php これを別ファイルで取り込むと$value= file_get_contents("text.php"); echo $value; print_r($value);両方とも Array ( [0] => 1 [1] => 2 [2] => 3 [3] => 4 [4] => 5 ) が出力されました。 配列として取り込みたいのですが可能でしょうか?

    • ベストアンサー
    • PHP
  • [PHP]配列におけるインデックスの考え方

    $scores = [10, 50, 30, 20]と言った配列があるとします。 配列内の10の値を取りだそうとすれば print $scores[0]; とすればブラウザに10の値が表示されます。 というか、配列というのは、[0][1][2][3]…と数えるものだと思っていました。 今、array_fill()関数について学習しています。 $prices = array_fill(0, 5, 10); としてprint_rで出力すると Array ( [0] => 10 [1] => 10 [2] => 10 [3] => 10 [4] => 10 ) と自分で理解できる範囲の結果が表示されます。 ところが、 $prices = array_fill(-2, 5, 10); をprint_rで出力すると以下のように返ってきます。 Array ( [-2] => 10 [0] => 10 [1] => 10 [2] => 10 [3] => 10 ) 単純に考えると、以下のように返ってこないのはなぜなのでしょうか? Array ( [-2] => 10 [-1] => 10 [0] => 10 [1] => 10 [2] => 10 ) また $prices = array_fill(5, 5, 10); と記述すると、 Array ( [5] => 10 [6] => 10 [7] => 10 [8] => 10 [9] => 10 ) と返ってきます。 配列のインデックス、添字を名前や商品名にして連想配列が出来るのはわかります。 (1)マイナス値からはじめた場合、なぜ[-2][-1][0]…のように返ってこないのはなぜでしょうか? (2)配列の添え字、インデックスが、[5]ではじまり[6][7][9][10]…とすることに 何か意味があるのでしょうか? $prices = [10, 10, 10, 10, 10]のような記述があった場合、初学者には[0]からはじまっているからこそ array_spliceなどでキー名がわからずとも、配列を操作を容易にできるのではないかと思ってしまいます。 上記2点、配列内でのマイナス値の扱い方、配列の添字が[0]以外からはじまる理由がよくわかりません。 分かる方いらっしゃいましたら教えて下さい。よろしくお願いいたします。

    • ベストアンサー
    • PHP
  • エクセルにおいての関数について質問させていただきます。

    エクセルにおいての関数について質問させていただきます。 添付画像上で例えば、1~10の間(赤枠内)の行には、どれだけ1(青枠内)の数が存在するかを別のセルに反映させたいのですが、お勧めの関数をご教授願えませんでしょうか?

  • テキストを多次元配列に格納したい

    $text="1;2;3:4;5;6:7;8;9:10;11;12:…"; $tmp = split(":",$text); これでtmpで格納された1;2;3、4;5;6、7;8;9、10;11;12をさらに分けて、多次元配列で格納しようと思います。 すなわち多次元配列"arrayについて、 print_r($array[0])の出力結果がArray ( [0] => 1 [1] => 2 [2] => 3 ) print_r($array[2])の出力結果がArray ( [0] => 7 [1] => 8 [2] => 9 ) となるような感じです。 しかし自分ではtmpからarrayへの変換がうまくいきません。 どなたかこのような働きをするコードを教えてください。 よろしくお願いします。

    • ベストアンサー
    • PHP
  • 標準関数printの動作をカスタマイズしたい

    mod_perl環境下でprintが$r->print()で置き換えられるのと同様に、通常のスクリプトでCORE::printの動作を変更する方法ってありますか? 例えば、s/java/perl/ を噛ましてから出力するようにする方法を教えて下さい。 mainパッケージだけではなく、他のモジュール内から呼ばれる標準関数のprintにも影響させたいです。

  • エクセルの関数について教えてください。

    例えば、ルーレットのデータを取るとします。 1000回まわして、A列のシートに黒、赤、緑(ハズレ)のどれが出たのかを記載します。 黒か赤が連続で続いた回数をそれぞれパーセントで表すにはどのように関数を使えば良いですか? 黒or赤が連続で出た回数・・0回 48パーセント                  1回 25パーセント                  2回 10パーセント                  3回 7パーセント                        ・     ・                   ・     ・                   ・     ・ と言う風に・・・

  • Excel:セルの内容が変更されない

    Excel2010(Excel97-2003ブック)で、1つのセルに関数を入力し、そのセルをコピーして、その下に何行か、貼り付けをしたのですが、セルの内容が変更されていませんでした。 一度、セルの中をクリックして、Enterキーを押さないと変更されません。 例えば、添付画像の「赤枠」が最初に関数を入力した部分でコピーしたとします。そして、貼り付けを「緑枠」にしたのですが、「緑枠」の部分が「赤枠」と同じ結果になってしまうんです。(添付画像では変更されていますが、実際は別のエクセルファイルです。) この説明で理解できたでしょうか? これは、どうすれば、セルの内容を変更できるようになるのでしょうか? 回答よろしくお願いします。

  • 連続関数の拡張

    一次元だとやさしすぎますが、 一般のR^dの閉集合F上での連続関数fが与えられたとき それをR^dの連続関数に拡張することはできますか? できるとすればどうすればよいでしょうか。 なお境界点xでfが連続とは 任意のε>0に対してxの近傍B_εが存在して、 y∈B_ε∩F ⇒ |f(x)-f(y)|<ε を満たすこととします。