PHP - if 语句中的赋值范围

标签 php variables scope variable-assignment

如果变量不是空值,如何在 if 语句中删除仅出现在 if block 中的变量?

此外,代码中 $var 的范围是多少:

if(($var = funky()) != null) {}

我可以在 if block 之外引用 $var 吗?

最佳答案

PHP 中的赋值表达式返回指定的值。来自he documentation :

The value of an assignment expression is the value assigned.

因此,如果 funky() 返回的值大致等于 null,则 $var = funky() 将计算为 false,因此 if block 将不会被执行。

不过,在 if 条件中进行赋值不会影响所赋值变量的范围。在赋值语句之后,$var 将在当前范围内(在 if block 内部和内)可用。

例如:

function funky() {
    return false;
}

if(($var = funky()) != null) {
    echo 'something';
}

var_dump($var);

在这里,您只会看到boolean false


我能想到的确保变量仅在 if block 内可用的唯一方法是在那里分配它并在 block 结束之前取消设置它。

if (funky() != null) {  // evaluate funky() without assigning
    $var = funky();     // call funky() again to assign
    // do stuff
    unset($var);
}

但我真的想不出这样做的任何充分理由。

关于PHP - if 语句中的赋值范围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43765542/

相关文章:

php - 在 codeigniter 中转换复杂的 JOIN 查询

php - 如果变量存储为 varchar,是否可以将其识别为 int 或 float 或 time

javascript - Node.js 全局 eval,抛出 ReferenceError

javascript - 从一个 javascript 文件调用变量到另一个

c# - 你如何在 C#/csharp 中返回 2 个变量?

JavaScript 作用域问题

asp.net-mvc-3 - Autofac - 混合 InstancePerHttpRequest 和异步作用域

php - mysql自动将字符串转换为整数

php - 与 PHP 对话从 Android 应用程序获取命令

python - 在 Python 中操作变量