Caution

お使いのブラウザはJavaScriptが実行できない状態になっております。
当サイトはWebプログラミングの情報サイトの為、
JavaScriptが実行できない環境では正しいコンテンツが提供出来ません。
JavaScriptが実行可能な状態でご閲覧頂くようお願い申し上げます。

  1. トップページ
  2. PHP入門編 - 文字列の出力とvar_dump()

文字列の出力とvar_dump()

みなさまどうも。

前回は『エスケープ文字』とかをやりましたね。文字列とかの挙動は大体把握できた頃合いだと思いますので、この勢いで文字列とかを出力する方法を確認していきましょう。

PHPでの文字列の出力処理はいくつかあり、これまでのサンプルでは『echo』っていうのがちょいちょい登場しているわけですが、その他にも『print』とかいう処理があったりします。これも文字列を出力できる処理のひとつになりますね。

そして忘れてはいけない『var_dump()』という関数があります。この『var_dump()』はPHPの開発において一番書かれる機会が多いのではないか、といったレベルの超重要関数になります。

これらを確認していきましょう。

まずは『echo』と『print』の概要と使い方ですね。『echo』と『print』は機能にそこまで違いはありません。では『echo』を使ったこれまでの処理を思い出してみましょう。最初の頃に書いた『Hello world』プログラムでございます。

<?php
echo 'Hello world';

これはそのまま『print』で書きなおすことができます。

<?php
print 'Hello world';

しかし、『print』には『echo』にない機能がひとつあり、文字列の出力を行ったあとにその文字列が『返り値』(戻り値)として数値の『1』が常に返ってきます。
※『返り値』は先の記事で解説していきます。

<?php
$txt = print 'Hello world'; // 変数『$txt』には数値の『1』が代入されます。
print $txt; // 数値の『1』が出力されます。

しかし、PHPの実装において『print』の戻り値の数値の『1』を受け取らなくてはならない機会はあまりなかったりします。そして余計な機能がない分、『echo』の方が若干処理が早かったりしますので、基本的に文字列の出力を行いたい際は『echo』を使っていくのが良いかもしれませんね。

(´-`).。oO(まあ処理が早いとはいっても本当に微々たるものなので個人的にはどちらを使っても構わないと思います...)

それと、もうひとつ違いがあり『echo』は『,』(コンマ、またはカンマ)で文字を区切ることができますが、『print』のほうは『,』で区切ることはできません。ちなみに『,』で区切る記述はあまり見かけないので何となくくらいで覚えておけばOKです。

<?php
// これは動きます。
echo 'Hello', ' world';

<?php
// これは動きません。
print 'Hello', ' world';

そして『echo』と『print』は関数ではなく言語構造って扱いになっています。

プログラム言語においての名前をつけた処理群を関数なんて呼んだりしますが、関数を実行させる際はお尻に『()』を付けるのが文法上のルールになっています。先ほどのソースコードをみてみましょう。
※関数についての細かい使い方とかは先の記事で紹介します。

<?php
echo 'Hello world';
print 'Hello world';

ごらんの通り『()』がなくても実行できてしまっていますね。なので言語構造なのでございます。まあ記述するときに『()』が必要ないってだけなので関数なのか言語構造なのかは全くさっぱり意識しなくても大丈夫です。

そして『()』をつけても実行させることができます。

<?php
echo('Hello world');
print('Hello world');

現場では『()』を付けないほうが一般的かも知れません。というわけで『echo』と『print』はこんな感じですね。

PHPはウェブサイト構築に特化した言語であり、主にウェブサイトを構築するために使われるわけでありますので『echo』の使用頻度は超高いです。大きなPHP処理を書いてるときは『echo』、『echo』、『echo』と書き続けることになること請け合いです。

そんな悩めるプログラマーさんのために(?)PHP5.4あたりから『echo』と同じ効果を得られる『<?=』と『?>』というショートタグが追加されました。使い方は以下のような感じです。

<?php
$name = 'sakurama';
?>
どうも、<?= $name ?>さん。

これは以下と同じです。

<?php
$name = 'sakurama';
?>
どうも、<?php echo $name; ?>さん。

なのでちょっと『echo』が大量に出てくる予感がしたら『<?=』と『?>』のショートタグを使うのもありでございます。

ただし、PHPのバージョンによっては初期状態で使用できない場合があります。使用可に変更する場合は『php.ini』の『short_open_tag = Off』のところを『short_open_tag = On』に変更してあげてください。そうすると多分動かせます。
※『php.ini』については先の記事で解説していきます。

あと「PHPでのショートタグは使用するべきではない」という意見も多いので仕事とかでPHPを書くときはショートタグを使用して良いのかどうか前もって確認しておくようにしましょう。

続きまして『var_dump()』の解説です。『var_dump()』は「ヴァーダンプ」(バーダンプ)って読みます。これは『echo』と『print』と同じように文字を出力してくれる関数なんですが、『echo』と『print』よりももっと内容を細かく出力してくれる関数です。ちょっと試してみましょう。以下のサンプルをみてください。

<?php
var_dump('Hello world');

上記のサンプルは『Hello world』プログラムを『var_dump()』で実装したものです。これを実行すると以下のテキストが返ってきます。

string(11) "Hello world"

『Hello world』って文字列の他に『string(11)』って頭につけて出力してくれてますね。これは「出力した中身は『string型』(文字列)で11文字だよ!」って意味になります。

先の記事で解説する『配列』というものがあるのですが、『配列』は『echo』や『print』では中身を表示できません。以下にサンプルを用意してみたので確認してみてください。

<?php
$txts = ['初音ミク', 'IA'];
echo $txts;

これを実行させると以下のテキストが返ってきます。

Array

『Array』は英語で『配列』って意味なんですが、『Array』って書いてあるだけで中身を教えてくれません。困ったもんでございます。では上記の記述を『var_dump()』ちゃんで書き換えてみましょう。

<?php
$txts = ['Miku', 'IA'];
var_dump($txts);

これを実行すると以下となります。

array(2) {
  [0]=>
  string(4) "Miku"
  [1]=>
  string(2) "IA"
}

なんだかものすごく沢山のテキストが返ってきましたね。この意味は「出力した内容はarray(配列)で個数が2個で『0』番目が『string』型で『4文字』で内容は『Miku』で〜」という感じになります。ちょっと『連想配列』とかの記述に慣れていないとよくわからないかもしれませんが、めちゃめちゃ細かく丁寧に教えてくれてます。

こんな感じで『変数』や『配列』などの中身を確認したり、デバッグで使用したりと様々なシーンで『var_dump()』ちゃんは使用されます。なのでみなさんもとっても可愛い『var_dump()』ちゃんと仲良くなっちゃってください。これから先の記事でも『var_dump()』ちゃんは大活躍していきます。

というわけで以上となります。続いての記事では『コメント』とか『コメントアウト』とかやっていきましょう。ではこの辺で。またお会いしましょう。

この記事は桜舞が執筆致しました。

著者が愛する小型哺乳類

桜舞 春人 Sakurama Haruto

ISDN時代から様々なコンテンツを制作しているちょっと髪の毛が心配な東京在住のプログラマー。生粋のロングスリーパーで、10時間以上睡眠を取らないと基本的に体調が悪い。好きなだけ寝れる生活を送るのが夢。ゲームとスポーツと音楽が大好き。誰か髪の毛を分けて下さい。

記事の間違いや著作権の侵害等ございましたらお手数ですがまでご連絡頂ければ幸いです。