1. ホーム
  2. php

[解決済み] make switch use ===比較 not ==比較 in PHP

2023-06-07 01:39:06

質問

以下のコードで、スイッチを使いながら 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() ドキュメント :

switch/caseは比較を緩くすることに注意してください。

つまり、回避策を考えなければならない。から 緩やかな比較の表 ということを利用することができます。 NULL == "0" が型キャストで偽になることを利用できます。

<?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'
?>

ライブデモ