Caution

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

  1. トップページ
  2. PHP入門編 - 文字列とは

文字列とは

みなさまどうもこんにちは。続きましてPHPでの文字というものについて色々とやっていきましょう。

PHPに限らず、プログラミングの世界では通常の文字の集まりのことを『文字列』といいます。英語だと『String』と呼ばれますね。

PHPでは『'』(シングルクォーテーション)、または『"』(ダブルクォーテーション)で囲むと『文字列』になります。以下のような感じですね。

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

ちなみに『'』と『"』で囲んじゃダメです。それは囲めてません。同じ記号で囲んでやってください。

<?php
echo 'Hello world"; // これはダメです。

「『文字列』になるってどういうことだっちゃ?」ってお話なんですが、例えば数字の『1』があるとしますよね。人間が読むのであるならば数値なのか文字なのかは大した問題になりませんが、プログラムの世界ではこの『1』は数値の『1』なのか、それとも文字列の『1』なのか、それとも別の何かなのか、はっきりと定義できるようにしないと処理の幅が非常に狭まってしまったり、トラブルが出やすくなったりと非常に嫌な展開になってしまうのでございます。

ちょっとPHPではないのですがJavaScriptのソースコードを見てみましょう。JavaScriptでは『+』を使って足し算ができるのですが、『+』を使って文字列の連結を行うこともできます。

JavaScriptでも『'』か『"』で囲むことで文字列にすることができるのですが、文字列なのか、数値なのか、はっきり定義できることで『1 + 2』の処理結果を数値の『3』にするのか、それとも文字列の『12』にするのかプログラマーの意図通りに処理させることができます。

console.log(1 + 2); // これは数値の『3』が出力されます。
console.log("1" + "2"); // これは文字列の『12』が出力されます。

もし『文字列』にするという処理がなかったら『1 + 2』の処理の結果は常に数値の『3』です。そうすると処理の幅がすごく狭まってしまいますよね。なのでPHPに限らず、他のプログラム言語でも『文字列』をはっきり定義できるようになっていたりします。プログラム言語の内部的な処理を構築する場合でもはっきり定義してあったほうが開発がしやすかったりします。

ほんの一部分の紹介ですが定義できることの利便性はこんな感じになりますね。ちなみにこういうデータの型を『データ型』と呼んだりします。『データ型』は『文字列』だけでなく『数値』だったり『真偽値』だったりと色々あったりします。『数値』とか『真偽値』とかは先の記事で紹介していきますので今回はバシッと『文字列』というものを理解してしまいましょう。

では改めてPHPの『'』と『"』の使い方について見て行きましょう。これは言語によって様々なんですが、PHPは『'』と『"』で処理に違いがあります。

まず『'』の使い方を紹介しますね、これは『'』の中に書いてある文字がそのまま文字列になります。どんな文字もバシッと書いてある通りに文字列になります。大事なことなので二回言い...(ry

<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="utf-8">
<title>PHPテスト</title>
</head>
<body>
<?php
	echo 'あいうえお';
?>
</body>
</html>

これをPHP処理して返ってきたテキストファイルを確認してみるとこうなっています。

<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="utf-8">
<title>PHPテスト</title>
</head>
<body>
あいうえお</body>
</html>

ちゃんとそのまま書いてある通りに文字列として出力してくれているようですね。

それに対して『"』をみてみましょう。単純な使い方は以下のように『'』と変わりません。

<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="utf-8">
<title>PHPテスト</title>
</head>
<body>
<?php
	echo "あいうえお";
?>
</body>
</html>

これを実行させるとこうなります。

<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="utf-8">
<title>PHPテスト</title>
</head>
<body>
あいうえお</body>
</html>

はい、見事に『'』を使用したときと同じ結果になっています。このように『'』と『"』は単純な文字を文字列にした場合は何も処理が変わりません。

しかし、『"』は少し特別な機能があり『エスケープ文字』を『エスケープ文字』として扱うことができます。以下のソースコードを確認してみましょう。『\n』は改行を表す『エスケープ文字』になります。
※『エスケープ文字』は次の記事で解説します。

<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="utf-8">
<title>PHPテスト</title>
</head>
<body>
<?php
	echo "あい\nうえお";
?>
</body>
</html>

これをPHP処理して返ってきたテキストファイルを確認してみるとこうなっています。

<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="utf-8">
<title>PHPテスト</title>
</head>
<body>
あい
うえお</body>
</html>

『あいうえお』のところに注目してみましょう。途中で改行が入っているのが分かりますでしょうか。では『"』ではなく『'』を使って同じ記述を書いてみましょう。

<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="utf-8">
<title>PHPテスト</title>
</head>
<body>
<?php
	echo 'あい\nうえお';
?>
</body>
</html>

するとこういうテキストファイルが返ってきます。

<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="utf-8">
<title>PHPテスト</title>
</head>
<body>
あい\nうえお</body>
</html>

このように『'』だと書いた文字がそのまま文字列として出力されていますね。これが『'』と『"』の違いです。

『"』はその他にも『変数』を展開して出力してくれる便利機能もついています。以下のソースコードを確認してみましょう。
※『エスケープ文字』に続き『変数』も先の記事で解説します。

<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="utf-8">
<title>PHPテスト</title>
</head>
<body>
<?php
	$txt = "初音ミク";
	echo "ぼくは $txt が好きです。";
?>
</body>
</html>

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

<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="utf-8">
<title>PHPテスト</title>
</head>
<body>
ぼくは 初音ミク が好きです。</body>
</html>

このように『"』には変数を展開して出力してくれる機能があります。

そして、変数展開させる場合の注意点として、変数の前後に半角スペースを入れないと単語の区切りがPHP側で認識できなくなってしまうため、上手く変数展開してくれなくなります。以下のサンプルを確認してください。先ほどの処理を半角スペースをいれずに記述したものです。

<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="utf-8">
<title>PHPテスト</title>
</head>
<body>
<?php
	$txt = "初音ミク";
	echo "ぼくは$txtが好きです。";
?>
</body>
</html>

これを処理させると以下のテキストファイルが返ってきます。

<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="utf-8">
<title>PHPテスト</title>
</head>
<body>
ぼくは</body>
</html>

ちょっと変な感じになっていますね。これは半角スペースがないため、変数『txt』がPHPの内部で上手く認識されていないのが原因です。イメージとしては変数『txt』ではなく変数『txtが好きです。』って認識されちゃっている感じですかね。

半角スペースを入れればいいだけの話なんですが、変数の区切りに使っている半角スペースもちゃんとテキストとして出力されちゃうので、展開した変数の左右に必ず半角スペースが入っちゃう展開になってしまいなんだか使い勝手が悪いです。

そんなときは『{}』(波括弧、またはブレイス)で変数をくくればちゃんと変数を認識してくれるようになります。

<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="utf-8">
<title>PHPテスト</title>
</head>
<body>
<?php
	$txt = "初音ミク";
	echo "ぼくは{$txt}が好きです。";
?>
</body>
</html>

上記の出力結果は以下となります。

<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="utf-8">
<title>PHPテスト</title>
</head>
<body>
ぼくは初音ミクが好きです。</body>
</html>

こうすると半角スペースを使わなくともバッチリ変数展開させることができます。よく使われる方法なので覚えておくとよいです。

というわけで『'』と『"』の違いはこのような感じになりますね。

『"』は特別な機能がありますので単純な処理速度でいうと『'』を使って『文字列』にしちゃったほうが高速だったりします。なので単純な文字を出力させたい場合は『"』ではなく『'』を使用すると良いでしょう。

(´-`).。oO(とは言うものの、処理速度の違いは微々たるものなので正直どっち使っても構わない気がします...)

さて、ではこの辺で記事を切りたいと思いますが、先程から『エスケープ文字』という単語がちょいちょい出てきましたね。次の記事はこの『エスケープ文字』について解説していきたいと思います。ではまたお会いしましょう。

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

著者が愛する小型哺乳類

桜舞 春人 Sakurama Haruto

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

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