PHP में AND और && दोनों logical AND operators हैं, लेकिन उनकी precedence (पूर्वता) अलग है।
Precedence Difference
| Operator | Precedence | विवरण |
|---|---|---|
&& | High (उच्च) | Assignment (=) से पहले evaluate होता है |
AND | Low (निम्न) | Assignment (=) के बाद evaluate होता है |
महत्वपूर्ण उदाहरण
<?php $x = true; $y = false; // && का उपयोग - HIGH precedence $result1 = $x && $y; // Equivalent to: $result1 = ($x && $y); // $result1 = false // AND का उपयोग - LOW precedence $result2 = $x AND $y; // Equivalent to: ($result2 = $x) AND $y; // $result2 = true (क्योंकि assignment पहले होता है!) var_dump($result1); // bool(false) var_dump($result2); // bool(true) - अप्रत्याशित!
व्यावहारिक प्रभाव
<?php // खतरनाक: AND के साथ assignment $success = authenticateUser() AND logActivity(); // यह ($success = authenticateUser()) AND logActivity() के बराबर है // logActivity() केवल तभी चलता है जब $success true हो // लेकिन $success हमेशा authenticateUser() का result होगा // सुरक्षित: && के साथ $success = authenticateUser() && logActivity(); // यह $success = (authenticateUser() && logActivity()) के बराबर है // दोनों functions चलते हैं, $success final boolean result होता है
सर्वोत्तम अभ्यास
- हमेशा
&&और||उपयोग करें - C-style operators, predictable precedence AND/ORकेवल legacy code compatibility के लिए मौजूद हैं- Assignment के साथ logical operations में
&&/||का उपयोग करें
पूर्ण Precedence Table (High to Low)
1. clone, new 2. [, ~, !, ++, --, (int), (float), (string), (array), (object), (bool), @ 3. ** 4. *, /, % 5. +, -, . 6. <<, >> 7. <, <=, >, >=, instanceof 8. ==, !=, ===, !==, <>, <=> 9. & 10. ^ 11. | 12. && 13. || 14. ?: 15. =, +=, -=, *=, **=, /=, .=, %=, &=, |=, ^=, <<=, >>= 16. AND 17. XOR 18. OR 19. , (comma)
सारांश
नियम: सभी नए कोड में
&&और||उपयोग करें।AND/ORकेवल बहुत पुराने legacy code को maintain करते समय मिल सकते हैं।