PHP में !== (Not Identical) एक valid comparison operator है, जबकि ==! कोई operator नहीं है - यह == और ! का संयोजन है।
!== - Not Identical Operator (Strict Inequality)
Value और Type दोनों की जांच करता है। Type juggling नहीं करता।
<?php
var_dump(1 !== 1); // false (same value, same type)
var_dump(1 !== '1'); // true (same value, DIFFERENT type: int vs string)
var_dump(1 !== true); // true (different type: int vs bool)
var_dump('hello' !== 'world'); // true
==! - Not an Operator (दो Operators का संयोजन)
==! को PHP पार्स करता है == और ! के रूप में:
<?php $x = true; $y = false; $result = $x ==! $y; // Parsed as: $x == (!$y) // !$y = !false = true // $x == true → true == true → true var_dump($x ==! $y); // bool(true) // Another example $a = 5; $b = 0; var_dump($a ==! $b); // $a == (!$b) → 5 == true → true (5 is truthy)
Comparison Operators Summary
| Operator | नाम | Behavior |
|---|---|---|
== | Equal | Loose comparison (type juggling) |
=== | Identical | Strict comparison (value + type) |
!= / <> | Not Equal | Loose inequality |
!== | Not Identical | Strict inequality (value OR type different) |
<=> | Spaceship | Three-way comparison (-1, 0, 1) |
उदाहरण: Type Juggling जाल
<?php
// Loose comparison (==) - खतरनाक हो सकता है
var_dump("123" == "123abc"); // false
var_dump("123" == " 123"); // true (whitespace ignored)
var_dump("0" == "0.0"); // true
var_dump("0" == false); // true
var_dump("" == false); // true
var_dump("0" == null); // true
// Strict comparison (!==) - सुरक्षित
var_dump("123" !== "123abc"); // true
var_dump("123" !== " 123"); // true
var_dump("0" !== "0.0"); // true
var_dump("0" !== false); // true
var_dump("" !== false); // true
var_dump("0" !== null); // true
सर्वोत्तम अभ्यास
- हमेशा
===और!==उपयोग करें जब तक type juggling जानबूझकर न हो ==!कभी न लिखें - यह confusing है और bug का कारण बनता है- Boolean checks के लिए:
if ($var)याif ($var === true) - Null checks के लिए:
if ($var === null)याif (is_null($var))
PHP 8.0+ Match Expression (Cleaner Alternative)
<?php
$result = match(true) {
$a === $b => 'identical',
$a == $b => 'equal only',
default => 'different'
};