php - 在 PHP 中使用 === 比较而不是 == 比较

标签 php type-conversion

有没有办法让下面的代码仍然使用开关并返回 b 而不是 a?谢谢!

$var = 0;
switch($var) {
    case NULL : return 'a'; break;
    default : return 'b'; break;
}

当然,使用 if 语句,你会这样做:

$var = 0;
if($var === NULL) return 'a';
else return 'b';

但对于更复杂的示例,这会变得冗长。

最佳答案

抱歉,您不能在 switch 语句中使用 === 比较,因为根据 switch() documentation :

Note that switch/case does loose comparison.

这意味着您必须想出一个解决方法。来自 the loose comparisons table ,您可以通过类型转换来利用 NULL == "0" 为 false 的事实:

<?php
$var = 0;
switch((string)$var) 
{
    case "" : echo 'a'; break; // This tests for NULL or empty string   
    default : echo 'b'; break; // Everything else, including zero
}
// Output: 'b'
?>

Live Demo

关于php - 在 PHP 中使用 === 比较而不是 == 比较,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3525614/

相关文章:

php - 使用 Imagick 将每个 PDF 页面保存为图像

LocalHost 上的 PHP 连接被拒绝 (HY000/2002)

c - 编译器如何处理超出范围的 char 值?

c++ - C 和 C++ 类型转换的区别?

php - 是否有等效于 PHP 中的成员初始化列表?

php - laravel query builder 如何在 wherein 函数中使用 like

php - 始终在父页面和子页面上显示子页面 PHP MySQL

.net - 转换、可分配性和自定义转换

scala - Spark graphX 从数据帧创建 Edge/Vertex RDD

sql - SSIS/SQL Server - 处理各种货币类型符号