【发布时间】:2012-05-30 13:17:54
【问题描述】:
这是我的小脚本,通过编写它我了解到我不知道 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,它也会在结尾回显“再见”。函数
foo()将检查是$var == 1还是2(对数据类型没有严格要求)。如果为 1,它将回显“函数应再次回显值:1”,如果为 2,它将回显相同但数字为 2。
出于某种原因both foo() 中的 if 语句被传递(我知道这一点,因为如果我将第一个 if 语句更改为 if ($var != 1),它会传递为 true,甚至如果我声明 $var = 1.
这里发生了什么?我以为我把这一切都搞砸了,现在我觉得我只是倒退了:/
【问题讨论】:
-
很多人会建议
global,就像我刚刚粘贴的那个链接一样,但是请为自己节省几个月的时间走错路,避免global像瘟疫一样。 -
global 有它的位置,但不是在这里,而且它经常被错误地使用。
-
@Dagon 我还没有看到它在 PHP 中正确使用过:p.
标签: php if-statement boolean variable-assignment comparison-operators