将变量设置为null混淆

时间:2016-04-20 18:37:59

标签: php variables null

这很好用

get(url).then(function successFirstRequest(){
    return get(someOtherUrl)
}).then(function successSecondRequest(){
   alert('Completed two network requests')
}).catch(err){
   // one of your requests failed
})

然而这会产生通知吗?

<?php
error_reporting(E_ALL);
$a = null;
var_dump($a); // outputs no notice and NULL

这是有效的

<?php
error_reporting(E_ALL);
$a;
var_dump($a); // outputs a notice followed by NULL

1 个答案:

答案 0 :(得分:3)

请注意未来的读者。

此答案基于原始帖子,然后介绍了使用课程https://stackoverflow.com/revisions/36752382/1并且未标记为其他编辑。

  

&#34;后跟NULL&#34;

  • 正常行为。

从变量基础知识手册http://php.net/manual/en/language.variables.basics.php

  

&#34;没有必要在PHP中初始化变量,但这是一个非常好的做法。未初始化的变量具有其类型的默认值,具体取决于使用它们的上下文 - 布尔值默认为FALSE,整数和浮点数默认为零,字符串(例如,在echo中使用)设置为空字符串,数组变为空。阵列&#34;

示例#1未初始化变量的默认值

<?php
// Unset AND unreferenced (no use context) variable; outputs NULL
var_dump($unset_var);

// Boolean usage; outputs 'false' (See ternary operators for more on this syntax)
echo($unset_bool ? "true\n" : "false\n");
  • 即使是未定义的变量,也请注意outputs NULL
  

&#34; @mistermartin我想我会在宣布$ a时发出通知。而不是在var_dump($ a)时尝试访问它;而不是 - MonkeyZeus&#34;

那是因为你没有尝试以任何方式,形状或形式访问它。

简单地做:(作为我可能添加的有效陈述)

<?php
error_reporting(E_ALL);
ini_set('display_errors', 1);
$a; // Awaits further instructions. Won't complain till then.

在您引入var_dump();或任何其他可能使用它的有效功能之前,不要发出通知。

  • 把它想象成地上的气体就在你脚下。在你引入点燃的比赛(或Zippo)之前,它确实做得不多。

另一个正在回声&#34;没有var_dump()会抛出通知但没有NULL。

即:

<?php
error_reporting(E_ALL);
ini_set('display_errors', 1);
echo $a; // This will make it complain, as will var_dump($a); in its place.

投掷:

  

注意:未定义的变量:第x行的/path/to/file.php