[PHP] 配列へのヒアドキュメントまたはNowdocの追加

公開

スポンサーリンク

PHPで配列にヒアドキュメント(またはNowdoc)を代入する方法のメモ。

普通に代入

$a[] =<<< EOF
  テスト
EOF;

array()を使って代入

$a = array(
  'test',
  <<< EOF
    ヒアドキュメントで代入
EOF
  ,
  'ポイントはカンマを終了識別子の後ろに書かないこと'
);

初めてヒアドキュメントを配列に代入しようとした時、ここでつまづいた。終了識別子の後ろにカンマをつけるとエラーになるのだが、それに気づかず時間を無駄にしてしまった。

ヒアドキュメントにおいて、終了識別子の後ろにはセミコロンのみが記載可能なのであって、カンマをつけるとエラーになるのだ。

$a = array(
  'test',
  <<< EOF
    終了識別子の後ろにカンマを書くと、、、
EOF,
  'エラーになる!!'
);

感覚的には上の書き方をしてしまいがちだと思うのですが、これだとエラーになってしまいます。

Nowdoc

$a = array(
  'test',
  <<< 'EOF'
  nowdocもいける
EOF
  ,
  'test'
);

基本的にヒアドキュメントと同じです。

連想配列

$a = array(
  'foo' => 'test',
  'heardocument' => <<< EOF
    ヒアドキュメントを連想配列に代入
EOF
  ,
  'nowdoc' => <<< 'EOF'
    Nowdocを連想配列に代入
EOF
  ,
  'bar' => 'OK'
);

=> <<<と奇妙な感じに。

関数を使って代入

$a = array('foo', 'bar');
array_push($a, <<< EOF
  こんなんするなって話ですが
EOF
);

スポンサーリンク


Comment