文字列の中で変数や配列、オブジェクトのプロパティを展開する文字列の中で変数やオブジェクトを展開する時に便利な方法について解説します。文字列の中では変数をはじめ、次のような配列やオブジェクトを展開することができます。配列オブジェクトのプロパティ&メソッド関数これらは全て文字列内で展開が可能です。それぞれで書き方が異なっています。1つずつ順に書き方を解説していきます。ある文字列と変数の組み合わせ文字列と変数を組み合わせて動的にテキストの内容を変えたい場合、よく使われるのは文字列演算子「.」を使ったものではないでしょうか。"こちらは".$test."環境です。「こちらはテスト環境です。」と出力される文字列と変数を組み合わせるのに確実な方法ではあります。文字列の中に含まれる変数の数が多くなるほど「.」が増え、書き忘れによるエラーが起こりやすくなったり、コードが読みづらくなってしまいます。変数を文字列内で展開するそこで、文字列演算子を使わない書き方へ変更していきます。"こちらは{$test}環境です。出力内容は上記と同じ「こちらはテスト環境です。出力内容は先ほどのコードと同じですが、文字列を「“」で囲って、変数と「.」で連結して...という煩わしさが無くなりました。代わりに変数を「{}」で囲って書くことで、文字列の中に変数があること明示しています。文字列の中に変数を入れる場合は、文字列を必ず「“(ダブルクォーテーション)」で囲む必要があることに注意してください。「‘」で囲った場合は「{$test}」」がそのまま文字列として出力されます。配列の値を文字列内で展開する配列の値についても、変数同様に文字列の中で展開することができます。"こちらは$test_array[message2]環境です。「こちらは本番環境です。」と出力される配列の場合は変数の時のような「{}」で囲む必要がなくなり、代わりに配列のアクセスしたい要素のキーを「[]」で囲って指定します。このとき、「‘(シングルクォーテーション)」は省略します。オブジェクトのプロパティ&メソッドを文字列内で展開する続いて、オブジェクトのプロパティとメソッドを文字列の中で展開します。例として、次のような「Item」オブジェクトがあることを想定します。4つのプロパティと、それぞれの値に対するセッター&ゲッターメソッドだけを用意したオブジェクトです。Item();$item->setGenre('ドーナッツ');$item->setName('オールドファッション');$item->setPrice('100');$item->setDescription('最もオーソドックスなドーナッツ。外はサクッと、中はシットリ。"{$item->name}の特徴:{$item->getDescription()}";Itemオブジェクトのインスタンスを生成し、プロパティとメソッドを文字列の中で展開しています。出力例オールドファッションの特徴:最もオーソドックスなドーナッツ。外はサクッと、中はシットリ。変数と同様に「{}」で囲むことで$item->nameを出力することができます。メソッドについても同じ形式で呼び出して、取得した結果をそのまま展開することができます。定数を文字列内で展開する定数は変数と同じ方法で展開できそうですが、実はそのままではできません。定数の場合は素直に文字列演算子「.」を使う方法か、もしくは次のような出力するだけの関数を用意することで展開することができます。"こちらは{$constant(TEST_MESSAGE)}環境です。";出力例こちらはテスト環境です。$constantに定数の値を返すだけのシンプルな無名関数(クロージャ)を代入し、文字列内で変数の時と同じように「$constant(定数名)」と書くことで定数を展開することが可能になります。文字列の中で定数を展開するパターンが何度かありそうであれば、今回のように無名関数を用意しておくと他でも使い回すことができて便利です。関数を文字列内で実行する最後に、通常の関数を文字列の中で実行する方法です。関数についても定数と同じように無名関数を使うことで実現できます。"これは{$func('testEcho','本番')}環境です。「こちらは本番環境です。」と表示される定数と違い、無名関数に実行したい関数名を指定する際は、定数と違い「‘(シングルクォーテーション)」で囲む必要があることに注意してください。引数がある場合は、通常の関数実行と同じように関数名の後に指定していきます。今回はシンプルに引数を1つだけとしていますが、必要に応じて複数設定することも可能です。こちらの記事は役に立ちましたか?GoodBadありがとうございます。よろしければ、あわせてフィードバックや要望などをご入力ください。コメント送信コメントありがとうございます!運営の参考にさせていただきます。)PHP2019-11-16フォームの基本構造を作成するPHP2019-11-16はしご高など旧字体漢字の文字化けを防ぐRECOMMEND遅いインターネット評論家の宇野常寛の新著。2018年頃から提唱されている「インターネットによって失った未来をインターネットによって取り戻す」をテーマにした本書が、いよいよ2月20日から書店に並びます。宇野さんがずっと温めてきた構想が詰まった1冊なので、個人的に非常に楽しみにしている一冊です。