5

私は<<<EODいくつかのデータを出力するために使用しています。私の質問は、<<<EOD構文内で php if 条件を使用する方法ですか? このように使用できますか

 <<<EOD
<h3>Caption</h3>
if(isset($variablename))
{
echo "...some text";
}
else
{
echo "...some text";
}
EOD;

これを、nameをパラメーターとして受け取るストアド プロシージャに変換する必要があります。

ここから読み始めるのが良いでしょう。http://msdn.microsoft.com/en-us/library/ff648339.aspx

4

5 に答える 5

12

いいえ、<<<ブロック内のすべて (「HEREDOC」として知られている) は文字列であるためです。

質問にコードを書くと、PHPコードを含む文字列を書くことになりますが、これはあなたが望むものではありません(願っています)。

HEREDOC の外側でロジックを実行し、その中で単純な変数を使用します。

if(isset($variablename)) {
   $outputVar = "...some text";
} else {
    $outputVar = "...some text";
}

print <<<EOD
<h3>Caption</h3>
{$outputVar}
EOD;
于 2013-05-09T16:17:34.133 に答える
7

二重引用符で囲まれた文字列では、ステートメントではなく式のみを使用できます。

ただし、複雑な変数式には回避策があります。ユーティリティ関数を事前に宣言し、変数に代入します。

$if = function($condition, $true, $false) { return $condition ? $true : $false; };

次に、次の方法で利用します。

echo <<<TEXT

   content

   {$if(isset($var), "yes", "no")}

TEXT;
于 2013-05-09T16:26:27.057 に答える
2

いいえ、ただし変数置換を使用できます

if(isset($variablename))
{
$var "...some text";
}
else
{
$var "...some text";
}
<<<EOD
<h3>Caption</h3>
$var
EOD;
于 2013-05-09T16:18:58.200 に答える
1

いいえ。ヒアドキュメント構文を使用した補間は、二重引用符を使用した場合と同じです。変数またはクラス メソッドの単純な補間を行うことができますが、それだけです。

このコード

$foo = 'bar';
<<<EOD
$foo
baz($foo);
EOD;

出力します

bar
baz(bar)
于 2013-05-09T16:18:36.937 に答える
0
<<<EOD
<h3>Caption</h3>
EOD;
if(isset($variablename))
{
echo "...some text";
}
else
{
echo "...some text";
}
于 2013-05-09T16:17:29.170 に答える