比较变量 PHP

新手上路,请多包涵

我怎样才能比较两个可变字符串,会不会像这样:

 $myVar = "hello";
if ($myVar == "hello") {
//do code
}

并检查 $_GET[] 变量是否存在于 url 中是否是这样的“

 $myVars = $_GET['param'];
if ($myVars == NULL) {
//do code
}

原文由 Harigntka 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 278
2 个回答
$myVar = "hello";
if ($myVar == "hello") {
    //do code
}

$myVar = $_GET['param'];
if (isset($myVar)) {
    //IF THE VARIABLE IS SET do code
}

if (!isset($myVar)) {
    //IF THE VARIABLE IS NOT SET do code
}

供您参考,在第一次启动 PHP 时让我困扰了好几天的事情:

 $_GET["var1"] // these are set from the header location so www.site.com/?var1=something
$_POST["var1"] //these are sent by forms from other pages to the php page

原文由 John 发布,翻译遵循 CC BY-SA 4.0 许可协议

为了比较字符串,我建议使用三重等于运算符而不是双重等于。

 // This evaluates to true (this can be a surprise if you really want 0)
if ("0" == false) {
    // do stuff
}

// While this evaluates to false
if ("0" === false) {
    // do stuff
}

为了检查 $_GET 变量,我宁愿使用 array_key_exists,如果键存在但内容为空,isset 可以返回 false

就像是:

 $_GET['param'] = null;

// This evaluates to false
if (isset($_GET['param'])) {
    // do stuff
}

// While this evaluates to true
if (array_key_exits('param', $_GET)) {
    // do stuff
}

尽可能避免做以下作业:

 $myVar = $_GET['param'];

\(_GET,取决于用户。因此预期的密钥可能可用或不可用。如果访问时密钥不可用,将触发运行时通知。如果启用通知,这可能会填满您的错误日志,或者在最坏的情况下向您的用户发送垃圾邮件。只需做一个简单的 array_key_exists 来检查 \)_GET,然后再引用它上面的键。

 if (array_key_exists('subject', $_GET) === true) {
    $subject = $_GET['subject'];
} else {
    // now you can report that the variable was not found
    echo 'Please select a subject!';
    // or simply set a default for it
    $subject = 'unknown';
}

资料来源:

http://ca.php.net/isset

http://ca.php.net/array_key_exists

http://php.net/manual/en/language.types.array.php

原文由 Katsuke 发布,翻译遵循 CC BY-SA 3.0 许可协议

推荐问题
logo
Stack Overflow 翻译
子站问答
访问
宣传栏