是否可以在 PHP 中声明空变量?

在 PHP 中有没有明确的方法来声明变量而不分配任何值?类似于 Java 或 Javascript?像这样的东西。


var $variable;

我假设此变量的默认值为NULL. 如果不可能,是否有任何合乎逻辑的解释为什么它没有在 PHP 中实现?


有很多文章的表格描述了isset,empty等的布尔结果。还有一个 value 的例子var $var; (a variable declared, but without a value),但是列出它有意义吗?


+------------------------------------------------------+--------------+-------------+---------------+

|               Value of variable ($var)               | isset($var)  | empty($var) | is_null($var) |

+------------------------------------------------------+--------------+-------------+---------------+

| NULL                                                 | bool(false)  | bool(true)  | bool(true)    |

| var $var; (a variable declared, but without a value) | bool(false)  | bool(true)  | bool(true)    |

+------------------------------------------------------+--------------+-------------+---------------+

https://www.virendrachandak.com/demos/php-isset-vs-empty-vs-is_null.php


白衣非少年
浏览 199回答 3
3回答

慕容3067478

PHP 没有像 Javascript 的var. PHP 变量在首次分配时被初始化。这是一种设计选择,无论好坏。要创建一个变量,你总是必须给它赋值。由于变量必须有一些值,而 PHP 的“无”值是null,因此您需要:$variable = null;(存在创建变量的替代方法,例如引用,例如:parse_str($foo, $bar); var_dump($bar);,但让我们把它放在一边。)该var语句存在于 Javascript 中以确定作用域;Javascript 具有嵌套作用域,需要显式初始化以确定变量的作用域。PHP 中的作用域以不同的方式工作并且没有歧义,因此不需要这样一个单独的语句。最初 PHP 也非常喜欢隐式全局变量(事后看来这是一个糟糕的想法),这与首先显式初始化语句的想法有点冲突。var $var;(声明的变量,但没有值)这是一个不完整/不正确的引用,它应该是"a variable declared but without a value in a class ",因为这是唯一var可以使用关键字的地方。例如,Python 也使用赋值初始化,也有嵌套作用域。它使用不同的方法来解决这个问题:foo = 42def bar():    foo = 69    def baz():        nonlocal foo        foo = 2Python 中的规则是,如果对函数内部的变量进行了任何赋值,则该变量是函数的局部变量。所以foo = 69在这里创建了一个新的局部变量bar。要允许从继承范围对变量进行赋值,必须使用nonlocalor关键字显式表示该变量是继承的。这里重新分配,但都不重新分配。globalfoo = 2foo = 69foo = 42

紫衣仙女

没有var关键字的工作方式与 javascript 中的相同。注意:与其他编程语言不同,PHP 没有用于声明变量的命令。它是在您第一次为其赋值时创建的。你的另一个问题:如果不可能,是否有任何合乎逻辑的解释为什么它没有在 PHP 中实现?一种合乎逻辑的解释是,在 PHP 中,所有变量都以$符号开头。因此 PHP 无需声明即可立即知道什么时候是变量而不是函数或关键字。事实上,javascript 代码也可以不使用声明,但在这里,大多数情况下仍然推荐使用它们。如果要null在 PHP 中声明一个变量并将其值设置为,只需使用:$myVar = null;

陪伴而非守候

您可以在不显式的情况下进行null:class BarClass {    private FooClass $foo;作为简单变量,你不能。使用$variable = null(或根本不写)。由于默认情况下所有未设置的变量均为 null:$var1 = null;var_dump(isset($var1), empty($var1), is_null($var1));// bool(false), bool(true), bool(true)var_dump(isset($var2), empty($var2), is_null($var2));// Notice:  Undefined variable: var2 - From `is_null`// bool(false), bool(true), bool(true)
打开App,查看更多内容
随时随地看视频慕课网APP