Menu

PHPの文字列:シングル・ダブルクォート、結合、変数展開

PHPの文字列はドット演算子で結合するか("Hello, " . $name)、ダブルクォートの中に変数を直接書きます("Hello, $name")。シングルクォートは書いたとおりに出力します。連結、.=、配列やオブジェクトの展開、strtoupper、strtolower、ucfirst、ucwordsでの大文字小文字の変換を学びます。

このページのコードはエディタで実行できます - 編集してすぐに結果を確認できます。

PHPの文字列は、シングルクォートかダブルクォートで囲んだテキストです。文字列はドット演算子で結合するか($first . ' ' . $last)、ダブルクォートの中に変数を直接書きます:"Hello, $name"。

ドットは任意の2つの値をつないで新しい文字列にします。数値は自動で変換されるので、"Total: " . 42は"Total: 42"になります。

シングルクォートとダブルクォートの違い

ダブルクォートは2つのことを余分に行います。変数をその値に置き換え、\n(改行)や\t(タブ)のようなエスケープシーケンスを対応する文字に変えます。シングルクォートは、\'と\\を除いて、テキストを書いたとおりに出力します。

固定のテキストにはシングルクォートを、変数や\nを入れたいときはダブルクォートを使います。両者の速度差は測れないほど小さいので、その行が読みやすくなるほうを選んでください。

.と.=で文字列を結合する

.=は文字列変数の末尾に追加します。ループの中でテキスト、たとえばHTMLの一部を組み立てるときの定番です。このブロックを実行するとエディターがPageタブを開き、描画されたリストが表示されます。

.と算術演算を混ぜるときは優先順位に注意が必要です。PHP 8以降、+と-は.より強く結びつくので、"Sum: " . 2 + 3は"Sum: 5"になります。括弧を付ければ次に読む人にも明確です:"Sum: " . (2 + 3)。

文字列の中に変数、配列、オブジェクトを入れる

単純な変数は、ダブルクォートの中にそのまま書けば動きます。配列の要素、オブジェクトのプロパティの連鎖、メソッド呼び出しは、式を波括弧で囲みます。波括弧は、変数とそのすぐ後に続く文字を区切る役目も果たします。

波括弧の中でメソッドは動きますが、普通の関数は動きません。最後の行は、$fruitの値の周りに波括弧と関数名をそのまま出力します。関数は文字列の前で呼び出すか、値が多い文字列にはsprintfを使いましょう。

大文字小文字の変換:strtoupper、strtolower、ucfirst、ucwords

これらの関数はバイト単位で動き、aからzの文字しか変えません。アクセント付きの文字、キリル文字、ギリシャ文字を含むテキストには、UTF-8を理解するマルチバイト版を使います。

1文字ずつ読む、文字列を繰り返す

文字列は配列のように添字でアクセスできます。負のオフセットは末尾から数えます。文字数を数える方法はstrlenを参照してください。

よくあるミス:.の代わりに+を使う

JavaScriptでは+で文字列を結合します。PHPの+は常に算術演算で、数値の文字列は数値として足され、数値でないテキストはエラーを投げます。

結合したテキストのはずが数値になっていたり、Unsupported operand types: string + stringが表示されたりしたら、.であるべき+を探してください。

よくある質問

PHPで文字列を結合するには?

ドット演算子を使います:$full = $first . ' ' . $last;。既存の文字列の末尾に追加するには.=を使います:$html .= '<li>Item</li>';。+演算子は数値用で、PHP 8では"Hello" + "World"はTypeErrorを投げます。

PHPのシングルクォートとダブルクォートの違いは何ですか?

ダブルクォートは変数とエスケープシーケンスを置き換えます:"Hi $name\n"は$nameの値と改行を出力します。シングルクォートはほぼすべてを書いたとおりに出力します:'Hi $name\n'はドル記号、名前、バックスラッシュとnを出力します。シングルクォートの中のエスケープは\'と\\だけです。

PHPの文字列の中に配列の値を入れるには?

波括弧で囲みます:"Hello, {$user['name']}"。オブジェクトのプロパティやメソッド呼び出しも同じです:"{$user->getName()}"。単純なキーなら、波括弧なしの"$user[name]"(キーを引用符で囲まない)でも動きます。

PHPで文字列を大文字や小文字にするには?

strtoupper('php')はPHPを、strtolower('PHP')はphpを返し、ucfirst('hello')は最初の文字を、ucwords('hello world')は各単語の先頭を大文字にします。アクセント付きの文字やラテン文字以外のテキストにはmb_strtoupper()とmb_strtolower()を使います。

Coddyのプログラミング言語のイラスト

Coddyでコードを学ぼう

始める