मैं php.net के ऑपरेटर पूर्वता अनुभाग के माध्यम से जा रहा है और this example जो कहते हैंअंतर: ऑपरेटर पूर्वता और कम सर्किटिंग
$a = 1;
$b = null;
$c = isset($a) && isset($b);
$d = (isset($a) and isset($b));
$e = isset($a) and isset($b);
var_dump($a, $b, $c, $d, $e);
//Result:
int(1)
NULL
bool(false)
bool(false) <== I get this
bool(true) <== I do not get this
मैं काफी डिबगिंग का एक बहुत का उपयोग करें और भर में आया कोड में कहां हूं, इसका ट्रैक रखने के लिए मेरे कोड में वर्बोज़ प्रिंट (_r) स्टेटमेंट्स। तो मैं कोड के बीच अलग-अलग बयान के रूप में $debug and print_r($dataArray)
या $verbose and print "Updating dataArray\n"
का उपयोग करता हूं, जिससे मुझे इन प्रिंट (_r) कथनों को नियंत्रित करने की अनुमति मिलती है। यह मेरे बाश अनुभव से आता है जहां मैं बहुत सारे [[ $condition ]] && { #Do if true } || { #Do if false }
लिखता था। बाश में, मुझे पता था कि वे कम सर्किट हैं और इस तथ्य का उपयोग बहुत सरल एक लाइनर लिखने के लिए करते हैं।
अब मैं देख रहा हूं कि इस अभ्यास के बहुत सारे ($verbose and print
लिखने) धीरे-धीरे मेरे if
कथन में रेंग रहा है। मुझे पता है कि यह एक अनुशंसित अभ्यास नहीं है और मुझे वापस में काट सकता है। हालांकि, मैं इस कौशल को मास्टर करना चाहता हूं क्योंकि मुझे ऐसे लाइनर लिखने का आनंद मिलता है और इसे व्यक्तिगत शैली के रूप में उपयोग करना चाहते हैं।
तो मेरे सवाल (रों) (हैं) है:
- कौन सा ऑपरेटर (
&&
याand
) लघु सर्किट है? - मैनुअल कहता है
&&
and
से अधिक प्राथमिकता लेता है, लेकिन क्या कोई ऑपरेटर प्राथमिकता के साथ लघु सर्किट ऑपरेटर सुविधा/कार्यक्षमता/विशेषता को मिश्रित करके इसका उदाहरण दे सकता है। (मूल रूप से मिश्रण और प्राथमिकता और शॉर्ट-सर्किटिंग का मिलान)
कृपया शॉर्ट-सर्किटिंग के साथ-साथ ऑपरेटरों की वापसी मूल्य प्रकृति दोनों पर विस्तार से विस्तृत करें।
पीएस: 1. मुझे आशा है कि इन ऑपरेटरों की साझेदारी समान और सहज है, लेकिन यदि आप किसी भी quirks पता है, तो कृपया मुझे प्रबुद्ध करें।
पीएस: 2. यदि आप अभी भी इस तरह के अभ्यास के खतरों के खिलाफ मुझे चेतावनी देने की तरह महसूस करते हैं, तो कृपया उदाहरणों को शामिल करें।
संपादित करें: ||
साथ or
की जगह मेरी सरल $var = mysql_(...) or die()
कोड बदलने के बाद, मुझे पता चला कि कैसे कष्टप्रद यह and
और or
के बजाय ||
और &&
ऑपरेटरों का उपयोग करने के लिए हो सकता है। कोड बस काम नहीं किया! मेरी समझ के लिए, पूर्व निर्माण TRUE
या FALSE
से $var
का वापसी मान निर्दिष्ट करता है, जो बदले में चेतावनी/त्रुटि/अप्रत्याशित व्यवहार उत्पन्न करने के लिए $var
के अनुक्रमिक उपयोग को बनाता है। उत्तरार्द्ध निर्माण mysql_(...)
से $var
का परिणाम निर्दिष्ट करता है और फिर =
और die
के परिसर का मूल्यांकन करता है।
यह मेरे लिए एक अच्छा सबक है, मैं बेहतर हूं 1. पीडीओ/माइस्क्ली का उपयोग करना शुरू करें और अपनी खुद की त्रुटियों को संभालें 2. कुछ लिखने से पहले दो बार सोचें जिसे मैंने व्यक्तिगत शैली कहा है।
// स्वयं के लिए नोट: एक पटकथा/व्याख्यात्मक भाषा, जबकि एक अन्य में कोड लिखने, हर एक अद्वितीय है और अपने स्वयं के quirks और नुकसान है, और thats सिर्फ दुख की बात * आह *
संभावित डुप्लिकेट [संदर्भ - PHP में यह प्रतीक क्या है?] (Http://stackoverflow.com/questions/3737139/reference-what-does-this-symbol-mean-in-php) – Gordon
@Gordon : _Reference_ के लिए धन्यवाद। मैंने सूची की जांच की और हालांकि कुछ प्रश्न प्रश्नों के हिस्से का जवाब देने लगते हैं (जैसे प्राथमिकता, जिसे मैं पहले से जानता था)। आईएमएचओ ऑपरेटरों की शॉर्ट सर्किट प्रकृति के साथ उनकी प्राथमिकता के साथ विस्तार से चर्चा नहीं की गई है। – Sudhi
उदाहरण लिंक पर टिप्पणी के लेखक ऑपरेटर प्राथमिकता का उल्लेख करते हैं जो इंगित करता है कि बराबर के बाद और कीवर्ड का मूल्यांकन किया जा रहा है। यह अजीब प्रतीत होता है लेकिन यह मुझे कुछ 'mysql_connect (...) या मरने() 'लाइनों की कुछ स्क्रिप्ट का उपयोग करता है। –