php - if 语句对空变量说真

标签 php

这里发生了什么?我的大脑来晚了吗?

我有一个包含exaclty下面代码的 php 文件。

<?php

$foo = 'foo';

$bar = null;

switch ($foo) {
    default:
    case 'foo':
        if ($bar) {
            echo 'true';
        } else {
            echo 'false';
        }
}

在浏览器中运行时打印 true 但在命令行上运行时打印 false ... 怎么办?我注意到当我删除 default: 行时它起作用了,但是整个 switch 语句应该如何与此相关?它仍然是一个简单的 if (null) { doing this anyway }

PHP 7.0.13 Apache/2.4.18

是的...我清除了浏览器缓存,按 ctrl+f5...我什至更改了脚本文件名。

更新: 对这个简单文件进行更改后...(只需在末尾添加空格)并在浏览器中按 f5 显示 false once 但不是 true 再次......无论我做什么。我真的不明白。

更新: 我的 PHP 版本刚刚从 7.0.13 更新到 7.0.15。你猜怎么着……还是一样的输出:

Apache/浏览器:正确

控制台:错误

最佳答案

为此你可以使用 isset

<?php
$foo = 'bar';

$bar = null;

switch ($foo) {
    default:
    case 'bar':
        if (isset($bar)) {
            echo "true";
            die();
        } else {
            echo "false";
            die();
        }
}

此代码将回显 false

您还可以使用双非运算符:

<?php
$foo = 'bar';

$bar = null;

switch ($foo) {
    default:
    case 'bar':
        if (!!$bar) {
            echo "true";
            die();
        } else {
            echo "false";
            die();
        }
}

default 案例的问题

在您提供的代码(以及我重新引用的代码)中,无论 $foo 设置了什么,您每次都会点击 case 'bar'到。

<?php
$foo = 'notbar';

$bar = null;

switch ($foo) {
    default:
    case 'bar':
        if (!!$bar) {
            echo "true";
            die();
        } else {
            echo "false";
            die();
        }
}

此代码仍将返回 false

您应该做的是在默认情况下包含一个break

<?php
$foo = 'notbar';

$bar = null;

switch ($foo) {
    default:
        echo "default";
        break;
    case 'bar':
        if (!!$bar) {
            echo "true";
            die();
        } else {
            echo "false";
            die();
        }
        break;
}

这段代码将回显 default 而没有其他内容。

关于php - if 语句对空变量说真,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41970037/

相关文章:

php - SQL - 查找某行在查询中的位置

php - Yii2中止请求和sql查询

php - 如何在 Laravel 5.4 中的 firstOrCreate 中使用 where

php - Magento CMS 页面 - 包含外部 PHP 脚本

php - PDO - 3D000 未选择数据库

php - 在对两个表执行 JOIN 的查询中使用 MySQL 中的 GROUP BY 时出现问题

php - PHP 中数组输入的键不正确

javascript - 如何使用 PHP 或 JavaScript 根据地理位置或 IP 将访问者重定向到另一个站点?

php - PDO 整数可为空值问题

php - 提取图像路径