我刚开始学习PHP,这是我的第一个疑问......
这两项工作都是:
<?php
$function1 = "Aahan";
print "Hi, $function1";
?>
和
<?php
$function2 = Aahan;
print "Hi, $function2";
?>
看到区别?在第二个例子中,我没有使用变量字符串的“”(引号)。但它仍然有效。
另外,这本书的愚蠢作者(我不会说出名字)在某些例子中使用“”而在某些情况下并没有使用它们,没有解释。那么,我该怎么想?无论哪种方式都没问题,或者你建议什么?
编辑:对不起伙计们,作者是个好人。我误解了这个字符串$x = 3;
,并开始查看上面的例子。刚刚意识到常量不需要引号。对不起。
EDIT-2:它没有向我显示任何错误,就像你们都提到的一样。如何让它显示错误?或者我的服务器本身有问题吗? (我不这么认为)
答案 0 :(得分:10)
使用第一个!!
在PHP中,没有引号的字符串构成constant。如果没有找到现有常量,则生成的值是名称本身,这就是第二个“有效”的原因。
第二个产生一个难看的E_NOTICE:
注意:使用未定义的常量Aahan - 在第2行的/test.php中假定为'Aahan'
答案 1 :(得分:4)
第二个实际应该是发出警告,“未定义的常数Aahan ASSUMING'Aahan'”。总是引用以避免这种情况。
另外,请确保在开发时将错误报告设置为max。
答案 2 :(得分:4)
没有引号不正确,如果您已启用通知:
注意:使用未定义的常量Aahan - 在xx行的test.php中假定为'Aahan'
它告诉你的是,虽然代码无效,但PHP足够聪明,可以假设您的代码可以执行而不会终止。你应该避免这种事情,因为PHP假设'Aahan'的价值可能不正确。在这种情况下,假设它是一个常数,它的值是'Aahan'。
要做到这一点就是这样:
define("Aahan","Aahan");
echo Aahan;
结果
Aahan
并且没有错误 - 尽管常见的做法是在块大写中使用其名称定义常量。它不是必需的,但它使事情更容易阅读。
如果要在变量中定义字符串,请使用引号。如果您要定义一个数字,请不要。
有效代码:
$myVariable = "Hello World"; //this is a string
$myVariable = 3.42; //this would set $myVariable to a numeric value.
$myVariable = HELLO_WORLD; //this would set $myVariable to the value of constant HELLO_WORLD
在第三种情况下,如果您没有定义HELLO_WORLD - 您会收到通知,并且它会将该值视为“HELLO_WORLD” - 就像您键入的一样:
$myVariable = "HELLO_WORLD";
哪个没有错误。当然,您可能想要定义常量的原因有很多。
答案 3 :(得分:3)
如果Aahan恒定未定义,则将其视为“Aahah”并向您发送警告。
你应该使用“”
答案 4 :(得分:3)
Aahan,
$function1 = "Aahan";
是php的正确方法。它是一连串的追逐者。请参阅php strings。
现在你做的时候
$function2 = Aahan;
Php搜索一个常量Aahan,当它未定义时,它将其视为一个字符串。进一步解释。考虑这些:
$function1 = "Aahan Is My Name";
和
$function2 = Aahan Is My Name;
第一个带“”(引号)的是正确的。第二个给你一个语法错误。
这是警告,除非您已将其关闭
注意:使用未定义的常量Aahan - 假设'Aahan'
编辑:启用全面Error reporting将以下代码添加到代码的第一行。
error_reporting(E_ALL);
答案 5 :(得分:2)
如果需要字符串,请使用引号:
$string = "this is a string";
$numeric_string = "1"; //actually a string, but will act like an integer
$integer = 1; //an integer
$value_of_a_constant = foo; // If no constant named "foo" exists,
// PHP assumes you meant a string containing "foo",
// but emits a notice, see below
我建议您打开error_reporting(设置为E_ALL或E_STRICT),然后打开display_errors。在脚本的最顶层执行此操作:
<?php
error_reporting(E_ALL);
ini_set('display_errors',1);
如果你有这样的设置,你会注意到你$var = Aahan
时,PHP会输出一条错误信息(从技术上讲,这是一个“通知”),告诉你你使用了一个未定义的常量,并且它把它当成一根绳子。
在学习的同时开启E_ALL将帮助您更好,更快地学习。