以下のコードを検討してください:
<?php
$arr = array('fruit' => 'apple', 'veggie' => 'carrot');
define('fruit', 'veggie');
print "Hello {$arr['fruit']}"; //This works
print "Hello $arr['fruit']"; //This doesn't work
?>
2番目のものが機能せず、次のような解析エラーが発生する理由を理解できません:
**Parse error:** syntax error, unexpected '' (T_ENCAPSED_AND_WHITESPACE), expecting '-' or identifier (T_STRING) or variable (T_VARIABLE) or number (T_NUM_STRING)
また、上記のプログラムを以下のように書いた場合、それはダイを追加した場合です。最初の実行行の後、動作していない行を静止させます。同じエラーが発生します。
<?php
$arr = array('fruit' => 'apple', 'veggie' => 'carrot');
define('fruit', 'veggie');
print "Hello {$arr['fruit']}";
die;
print "Hello $arr['fruit']";
?>
これはまったくわかりませんでした。最初の行を印刷する必要がありました。その後、コードを死にかけているため、コンパイル中に次の行を考慮する必要はありませんが、最初の行の実行を考慮して禁止しています。
なんでそうなの?