{}波括弧って何?
今回は{}波括弧を中心に説明します。
PHPerはこの{}波括弧を知っている人が少なくないと思います。
自分も変数をパースする時に、よく使っていますね。
こんな便利な{}をダイスキです。
{}波括弧の記法
基本記法
sample_1
// 文字列の変数のパース
$gender_flag = '0';
echo "gender: { $gender_flag}"; // NG: gender: { 0}
echo "gender: {$gender_flag }"; // OK: gender: 0
echo "gender: {$gender_flag}"; // OK: gender: 0
// 配列の変数のパース
$gender_flag = array('male' => '0', 'female' => '1');
echo "gender: {$gender_flag[male]}"; // NG: NOTICE ERROR(undefined variable)
echo "gender: {$gender_flag['male']}"; // OK: gender: 0
// オブジェクトの変数のパース
$gender_flag = new stdClass;
$gender_flag->male = '0';
$gender_flag->female= '1';
echo "gender: {$gender_flag->male}"; // OK: gender: 0
// HTML画面の入力値による変数のパース
<input type="radio" name="gender_flag" value="{$gender_flag->male}" checked>Male
<input type="radio" name="gender_flag" value="{$gender_flag->female}">Female
本当に弱点?
今回{}波括弧に変数を埋め込んだ文字列をcsvファイルに出力したいの場合は?
sample_2
// 定義
$gender_flag = '0';
$str = "gender: {$gender_flag}";
// ログ出力
$handle = fopen("c:\\logs\\20180124.log", "a");
fwrite($handle, $str);
fclose($handle);
// ログファイル(20180124.log)を確認しましょう
gender:
// ↑ [0]が消えた?
現象解消
{}波括弧がダイスキなヒトにとって、{}波括弧が弱点あることを信じられないけど、原因調査しなきゃ、グーグルには{}波括弧に関して、こういうような情報がなかなか出ないな(汗~~)
。。。。なぜ。。。。
。。。。なんで。。。。
。。。。どして。。。。
。。。。(時間過ぎ)。。。。
。。。。(もしかして波括弧の原因じゃないと)。。。。
。。。。(時間過ぎ)。。。。
良く調べたら、こういう現象は{}波括弧のせいじゃなくて、PHPではfwriteを使う時、先頭の[0]がよく消えるらしくて、(汗~~)では、書き方を次にしたら、どうですか?
sample_3
// 定義
$gender_flag = '0';
$gender_flag = sprintf("%s", $gender_flag); // ←-追加行
$str = "gender: {$gender_flag}";
// ログ出力
$handle = fopen("c:\\logs\\20180124.log", "a");
fwrite($handle, $str);
fclose($handle);
// ログファイル(20180124.log)を確認しましょう
gender: 0
// ↑ [0]が出た!
結局:
やはり{}波括弧は完璧!!!