Edited at

ヒアドキュメントと連想配列

こんなサンプルコードを書いてみた。

<?php

$size = array(
'height' => 157.5,
'width' => 77.4,
'depth' => 7.7
);

echo <<<EOT
The height of "iPhone XS Max" is $size[height] mm.

EOT;
echo <<<EOT
The width of "iPhone XS Max" is ${size["width"]} mm.

EOT;
echo <<<EOT
The depth of "iPhone XS Max" is {$size["depth"]} mm.

EOT;

実行結果は、このように3つのケースで正しく表示できている。

SS_20180914_110910_00.png

このように書くとエラーになる:

echo <<<EOT

The height of "iPhone XS Max" is $size["height"] mm.

EOT;


Parse error: syntax error, unexpected '"', expecting '-' or identifier (T_STRING) or variable (T_VARIABLE) or number (T_NUM_STRING)


heightのケースが、個人的にはとても気持ち悪く感じるというか、配列でキーを文字列で与えるときは引用符で括るっていう文法を、そこだけ無視できていることがしっくりこない。

なので私はwidthかdepthのケースで書くことが多い。このブログみたいにカラー文法表示がうまく働かないケースも考慮すると、depthのケース「{$size["depth"]}」が無難なのかもしれない。

PHP: ヒアドキュメントと連想配列 - m6uのエンジニアっぽい日記からの転載)


参考文献

変数のパース - 文字列