これが私の小さなスクリプトです。これを書いているうちに、PHP が変数をどのように処理するのかまったくわからないことがわかりました...
<?php
$var = 1;
echo "Variable is set to $var <br />";
if (!foo()) echo "Goodbye";
function foo()
{
echo "Function should echo value again: ";
if ($var == 1)
{
echo "\$var = 1 <br />";
return true;
}
if ($var == 2)
{
echo "\$var = 0 <br />";
return false;
}
}
?>
したがって、このスクリプトがどのように解釈されると私が考えたかは次のとおりです。
ステートメント
if (!foo)
が実行されfoo()
ます。関数が を返した場合false
、最後に「Goodbye」もエコーします。この関数は、または(データ型について厳密ではありません)
foo()
かどうかをチェックします。1 の場合、「関数は再び値をエコーする必要があります: 1」とエコーし、2 の場合、同じことをエコーしますが、番号は 2 です。$var == 1
2
何らかの理由で、両方のif ステートメントfoo()
が渡されています (最初の if ステートメントを に変更するとif ($var != 1)
、. $var = 1
ここで何が起こっているのですか?これで全部落ちたと思っていたのに、今は逆戻りしたような気がします :/