print_r()による配列情報出力
そふぃのPHP入門 >> PHP言語リファレンス >> PHPの配列 >> print_r()による配列情報出力

print_r()による配列情報出力

配列の出力は

今まで散々配列について説明してきましたが、配列ってキー(添え字)なしで普通に文やprint()文で出力するとどうなるかご存知でしょうか?。今までも変数に値を代入したら出力してみて動作確認、なんて作業を行っていましたが、配列に関してはキー無しの配列名のみで文やprint()文出力すると「Array」という値が出力されます。

配列というのは1つの変数にキー(添え字)で複数の値を持たせているため、ただ単に配列名(変数名)で出力しただけでは配列の中のどの値を指しているのか分からないから正確な値が出力できないのです。

ちなみに「Array」って英単語はそのまんま「配列」って意味ですw。文やprint()文だと「配列だよ~~」という表示しかされないわけですね。

試しにやってみましょうね^^

  1. <?php
  2. $arr = array("a","b","c");
  3. echo $arr;
  4. ?>

出力結果

Array

ほら、「配列だよ~~」って言ってる(笑)。ちゃんとキー(添え字)をつけて出力すればこのような事はありませんが、では、配列がどのように構成されているかを見たい場合はどうするのでしょう。

キー(添え字)と値をループ処理で出力する・・・・とか考えてしまいそうですが、そんな面倒なことする必要はありません。大体ループ処理なんて怖くてできない!!って人の為にも??wPHPではちゃんと他の方法が用意されてます。

print_r()関数で配列情報を出力

ループ処理はそのうちできるようになってもらわないと多分PHPスクリプトは組めませんが、今のところはprint_r()なんていう関数で十分です。関数というものに関しては徐々に理解していくとして、このprint_r()関数は変数が配列でもちゃんと情報を出力してくれます。

参考関数

  • print_r() ---- 指定した式に関する情報を解りやすく出力する

書式

  • bool print_r( mixed expression [, bool return ] )

いきなりこんな関数の情報を出されても分からない人は無視していいです(笑)。とにかくprint_r()関数を使って配列の中身を表示させます。使い方はprint_r()関数の括弧「()」の中に出力したい変数情報(配列でも可)を入れるだけです。第2引数は結果を返すかどうかのオプションですが、省略可能ですし今回は必要ありませんので頭がこんがらがるくらいならスルーしておいて下さい。

つまり、先ほど述べた「キーと値をループ処理して表示」だとかいうめんどくさそうな処理を

  1. print_r( $変数もしくは配列名 );

とするだけでやってくれるんですねぇ。しかも見やすくHTML整形までしてくれます。

  1. <?php
  2. $arr = array("a","b","c"); //さっき作ったのと同じ配列を作って・・・
  3. print_r($arr); //今度はprint_rで出力してみます。
  4. ?>

出力結果

Array ( [0] => a [1] => b [2] => c )

さて、配列のキーと値という大事な情報が表示されました^^v。ちなみに、print_r()関数は文やprint()文のように括弧「 () 」を抜いちゃだめです。と、いうか普通の関数は必ず括弧「 () 」を付けなくてはいけないので、文やprint()文の方が特殊で例外的な扱いだと思ってください。

print_r()関数を<pre>タグで整形

さて、先ほどprint_r()関数がHTML整形までしてくれる、とお話しましたが、まだどういう事かわからない方も多いと思うのでちょっと説明させていただきます。print_r()関数は出力した時見やすいように勝手に(笑)改行文字(\nなど)や半角スペースを入れてるって事です。

これはちょっとソース表示してさっきの出力の部分を見てみると分かります。ちゃんと改行や半角スペースが入ってると思います。ちなみに、このページをWindowsのメモ帳でソース表示すると思いっきり文字化けしてます(笑)。ま、化けてても問題の個所は英数字のみなので化けずにちゃんと見れるし、改行とスペースがちゃんと入ってるかどうかの確認さえ取れれば問題ないので放置します(笑)。自分で書いてみた人はそふぃのページのソース見るより自分の出力結果のページを見たほうが早いですのでそちらで♪。私のページだと該当個所が相当下になりますので(笑)

ブラウザがHTMLを表示する時に、「改行や半角スペースは最初の1つを半角スペースとして表示し、後は無視して表示する」というルールを覚えてるかと思いますが、覚えてないなら今覚えて下さい(爆)。とにかくそーゆールールのため、print_r()関数がいくら見やすく改行や半角スペースを入れてくれてあるからって、ブラウザに表示させちゃったら全部一列・・・じゃあもったいないので、<pre>タグっていうHTMLタグ使って下さい。

念のために説明しておきますが、<pre>~</pre>は~内のコードを上記の規則を無視してそのまんま表示します。改行や半角スペースが連続していてもそれもちゃんと表示するって事です。ソースコードを表示する際に用いられる事が多いタグですね。ただし、<pre>タグ内でも「<」などの特殊文字は「&lt;」などで記述する必要があります。

さて、肝心のPHPから話がそれてしまいますので、これ以上の詳しい解説は別途HTML講座を開いているサイトでお願いします。

  1. <?php
  2. $arr = array("a","b","c"); //またもや同じ配列ですが・・・
  3.  
  4. //タグは出力されると見えないからってecho(かprint)忘れちゃだめよ
  5. echo "<pre>";
  6. print_r($arr); //今度は<pre>タグで囲ってます。
  7. echo "</pre>";
  8. ?>

出力結果

Array
(
    [0] => a
    [1] => b
    [2] => c
)

上記のサンプルではPHPの中に<pre>タグを入れていますが、PHPタグの外に出しても構いません。というかそっちの方が楽かも。上記はあくまで一例としてのサンプルです。

さて、大分見やすくなったと思いますがいかがでしたか?。補足ですが、多次元配列でもちゃんときれいに表示してくれますので試してみて下さい。それなりの数の配列をいじってると次第に頭がこんがらがってくるのですが、そのような時にprint_r()関数で配列情報を出力してみると分かりやすく表示されるので是非覚えておいてください。