3 回答
TA贡献1773条经验 获得超3个赞
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 = 42
def bar():
foo = 69
def baz():
nonlocal foo
foo = 2
Python 中的规则是,如果对函数内部的变量进行了任何赋值,则该变量是函数的局部变量。所以foo = 69在这里创建了一个新的局部变量bar。要允许从继承范围对变量进行赋值,必须使用nonlocalor关键字显式表示该变量是继承的。这里重新分配,但都不重新分配。globalfoo = 2foo = 69foo = 42
TA贡献1839条经验 获得超15个赞
没有var
关键字的工作方式与 javascript 中的相同。
注意:与其他编程语言不同,PHP 没有用于声明变量的命令。它是在您第一次为其赋值时创建的。
你的另一个问题:
如果不可能,是否有任何合乎逻辑的解释为什么它没有在 PHP 中实现?
一种合乎逻辑的解释是,在 PHP 中,所有变量都以$
符号开头。因此 PHP 无需声明即可立即知道什么时候是变量而不是函数或关键字。
事实上,javascript 代码也可以不使用声明,但在这里,大多数情况下仍然推荐使用它们。
如果要null
在 PHP 中声明一个变量并将其值设置为,只需使用:
$myVar = null;
TA贡献1757条经验 获得超8个赞
您可以在不显式的情况下进行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)
- 3 回答
- 0 关注
- 198 浏览
添加回答
举报