PHP ダブルクォーテーションに囲まれた文字列内の変数置換を調べる

スポンサーリンク

<?php
//------------------------------------
// 普通の変数の場合
$num = 16;
echo "numの値($num)";
// 結果成功 numの値(16)
echo "numの値$num個";
// 結果失敗 numの値
echo "numの値($num個)";
// 結果失敗 numの値()
echo "numの値${num}個";
// 結果成功 numの値16個
echo "numの値(${num}個)";
// 結果成功 numの値(16個)
//------------------------------------
// 置換する変数が配列の場合
$array_num[3] = 67;
echo "numの値($array_num[3])";
// 結果成功 numの値(67)
echo "numの値$array_num[3]個";
// 結果成功 numの値67個
echo "numの値($array_num[3]個)";
// 結果成功 numの値(67個)
echo "numの値${array_num[3]}個";
// 結果成功 numの値67個
echo "numの値(${array_num[3]}個)";
// 結果成功 numの値(67個)
//------------------------------------
// $num個と言う変数を定義してみる
$num = 16;
$num個 = 23;
echo "numの値($num)";
// 結果 numの値(16)
echo "numの値$num個";
// 結果 numの値23
echo "numの値($num個)";
// 結果 numの値(23)
echo "numの値${num}個";
// 結果 numの値16個
echo "numの値(${num}個)";
// 結果 numの値(16個)
?>

PHPが変数名をどう解析しているかで、意図した結果とはならない場合が起きてしまいます。
おそらくPHPのバージョンでも違いが出るかも。
変数名を特定しやすいように 中カッコ{}で括ってあげると良い結果に
$num → ${num}
$hoge → ${hoge}