为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

PHP
白衣非少年 2023-05-12 15:21:15
在 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
查看完整描述

3 回答

?
慕容3067478

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


查看完整回答
反对 回复 2023-05-12
?
紫衣仙女

TA贡献1839条经验 获得超15个赞

没有var关键字的工作方式与 javascript 中的相同。

注意:与其他编程语言不同,PHP 没有用于声明变量的命令。它是在您第一次为其赋值时创建的。


你的另一个问题:

如果不可能,是否有任何合乎逻辑的解释为什么它没有在 PHP 中实现?

一种合乎逻辑的解释是,在 PHP 中,所有变量都以$符号开头。因此 PHP 无需声明即可立即知道什么时候是变量而不是函数或关键字。

事实上,javascript 代码也可以不使用声明,但在这里,大多数情况下仍然推荐使用它们。


如果要null在 PHP 中声明一个变量并将其值设置为,只需使用:

$myVar = null;


查看完整回答
反对 回复 2023-05-12
?
陪伴而非守候

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)


查看完整回答
反对 回复 2023-05-12
  • 3 回答
  • 0 关注
  • 198 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信