Language
日本語
English

Caution

JavaScript is disabled in your browser.
This site uses JavaScript for features such as search.
For the best experience, please enable JavaScript before browsing this site.

  1. Home
  2. PHPBeginner - String Output and var_dump()

String Output and var_dump() - Japanese Only

みなさまどうも。

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

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()』ちゃんは大活躍していきます。

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

This article was written by Sakurama.

Author's beloved small mammal

桜舞 春人 Sakurama Haruto

A Tokyo-based programmer who has been creating various content since the ISDN era, with a bit of concern about his hair. A true long sleeper who generally feels unwell without at least 10 hours of sleep. His dream is to live a life where he can sleep as much as he wants. Loves games, sports, and music. Please share some hair with him.

If you find any errors or copyright issues, please .