[PHP-users 12332] ヒアドキュメントの仕様について

HIRANO Nobuaki php-users@php.gr.jp
Wed, 25 Dec 2002 18:32:46 +0900


いつも拝見させていただいております。
平野と申します。

環境について:
Redhat7.2
Apache 1.3.27
PHP-4.2.3

ヒアドキュメントの仕様についてお聞きしたいと思います。

<?php
$foo = "";
print $foo."\n";
print ord($foo);
?>

という記述をした際、ord関数での表示が「0」になります。

そこでヒアドキュメントについてのマニュアルを読むと
「ヒアドキュメントは、2重引用符を使用しませんが、
2重引用符で括られた 文字列と全く同様に動作します。」
と記述されています。

気分的に

<?php
$foo = <<<EOM
EOM;
print $foo."\n";
print ord($foo);
?>

と記述すれば同じような動作を期待できると思うのですが、
Segmentation fault となります。

こんな記述する意味がないといえばあまりないのですが
例えば、「値を設定するだけで動作できるプログラムがあったとして、
その値を設定する変数の初期値をヒアドキュメントで設定している場合があり、
その変数の初期値は設定されない場合もある」というようなことをしようとしています。

# コメントでその旨を記述し
# $foo="";
# にすればいいと言われればそれでおしまいなのですが…(^^;

<?php
$a="";
$foo = <<<EOM
$a
EOM;
print $foo."\n";
print ord($foo);
?>

ちなみに上記のように記述すると「0」が表示されます。
ヒアドキュメントにはかならず何か
含めなければならないってことでしょうか?

ヒアドキュメントの仕様についてご教授願いたいと思います。
よろしくお願い致します。