2010-08-18 4 views
7

कैसे निम्नलिखित बूलियन अभिव्यक्ति PHP में लिखा जाना चाहिए:PHP में बुलियन अभिव्यक्तियों को कैसे लिखा जाना चाहिए?

$foo = ""; 
if($var==TRUE){ 
    $foo = "bar"; 
} 

या

if($var==TRUE){ 
    $foo = "bar"; 
}else{ 
    $foo = ""; 
} 

या

$foo = ($var==TRUE) ? "bar": ""; 
+0

धन्यवाद जॉर्ज, मैंने काम छोड़ने से ठीक पहले इसे 16.55 पर पोस्ट किया था, मैं शीर्षक बना सकता था और हिंदसाइट में वाक्य को स्पष्ट कर सकता था। :) – Stann0rz

उत्तर

8

पहले, true, एक निरंतर नहीं है, यह एक टोकन है, तो यह अपरकेस कृपया नहीं है (मैं कुछ मानकों को पता है कि क्या करना है, लेकिन मैं यह अर्थ confuses लगता है) ...

दूसरा, आपको if के अंदर अनावश्यक $var == true तुलना की आवश्यकता नहीं है। यह बिल्कुल if ($var) { जैसा है (एक डबल == तुलना के लिए। एक समान तुलना === स्पष्ट होना आवश्यक है)।

तीसरा, मैं पूर्व-प्रारंभिक पसंद करता हूं। तो:

$foo = ''; 
if ($var) { 
    $foo = 'one status'; 
} else { 
    $foo = 'another status'; 
} 

यदि आपको अन्य शाखा की आवश्यकता नहीं है, तो बस इसे हटा दें। मैं पूर्व-प्रारंभिकता को प्राथमिकता देता हूं क्योंकि यह आपको चर को प्रारंभ करने के लिए मजबूर करता है, और यह उन मामलों को रोकता है जहां आप इसे शाखाओं में से एक में प्रारंभ करना भूल जाते हैं। इसके अलावा, यह आपको एक प्रकार का संकेत देता है जब आप बाद में फ़ंक्शन को पढ़ने के लिए वापस जाते हैं ...

और उस तरह की एक साधारण शाखा के लिए, टर्नरी सिंटैक्स का उपयोग करना ठीक है। यदि अधिक जटिल तर्क है, तो मैं दूर रहूंगा हालांकि:

$foo = $var ? 'bar' : ''; 
+0

ईमानदार होने के लिए, उपर्युक्त कोड इस बात पर कोई संबंध नहीं देते कि मैं वर्तमान में किस पर काम कर रहा हूं और कुछ प्रश्नों में मैंने कुछ सवाल उठाया था ताकि सवाल स्पष्ट हो सके, बूलियन मूल्यों की तुलना में अधिक तार्किक लग रहा था स्ट्रिंग या पूर्णांक तुलना। प्री-स्टार्टलाइजेशन कुछ ऐसा है जो मैंने हमेशा किया है, लेकिन मुझे PHP, या किसी भी भाषा को 'सिखाया नहीं गया' और कभी सोचा नहीं गया कि इसके लिए सबसे अच्छा अभ्यास था या नहीं। सलाह ircmaxell के लिए धन्यवाद। – Stann0rz

5

उन काम के सभी। यह वरीयता है। मैं वैरिएबल को पहले शुरू करने पर विचार करता हूं जैसा कि आप पहले उदाहरण में करते हैं। लेकिन कुछ आसान के लिए, मेरी पुस्तक में तीसरा विकल्प ठीक है।

$foo = $var ? "bar" : ""; 
+3

जब तक वे विशेष रूप से सत्य की तलाश नहीं कर रहे हैं, तो आप $ foo = ($ var === TRUE) का उपयोग करना चाहेंगे? "बार": ""; – Codeacula

1

मैं पहली बार एक पसंद:

इसके अलावा, 3 तो वर्बोज़ होना करने के लिए करता है, तो $ वर सिर्फ एक बूलियन मान है नहीं है

$foo = ""; 
if($var==TRUE){ 
    $foo = "bar"; 
} 

के बाद से यह स्पष्ट है, संक्षेप में, और पढ़ने के लिए आसान है।

0

इससे कोई फर्क नहीं पड़ता। मुझे पहली बार पसंद है जब बहुत सारे ईफिफ़ हैं ताकि आप जानते हैं कि वेरिएबल हमेशा प्रारंभ होता है। लेकिन यह वास्तव में वरीयता का मामला है।

उद्धरणों की तरह, मुझे php में एकल का उपयोग करना पसंद है। कोई अच्छा कारण :)

+0

ओह और तीसरा व्यक्ति $ foo = $ var जितना आसानी से हो सकता है? 'बार': ''; –

+0

मैं उस समय के आधार पर उद्धरण के मिश्रण का उपयोग करता हूं जो मैं उस समय आउटपुट कर रहा हूं, HTML स्ट्रिंग्स एकल कोट्स का उपयोग करके उत्पन्न की जाती हैं, जबकि मुझे लगता है कि डबल कोट्स एक नई लाइन फ़ीड उत्पन्न करने का एकमात्र तरीका है? - "\ r \ n" – Stann0rz

0

सही उत्तर, जैसा कि अक्सर होता है, "यह निर्भर करता है"। इस मामले में,

if ($var==TRUE) $foo = "bar"; 
else $foo = ""; 

बहुत स्पष्ट है। लेकिन आपका संदर्भ क्या है?

सामान्य रूप से, तृतीयक ऑपरेटर, आपका तीसरा विकल्प, अत्यधिक सावधानी के साथ उपयोग किया जाना चाहिए, क्योंकि इसे पढ़ने में बहुत आसानी से मुश्किल हो जाती है।

लेकिन इस बात के बारे में सोचें कि आप अपने कोड को क्या चाहते हैं, इसके बारे में क्या करें। क्या आप अपना $ foo "सामान्य" मान पर सेट करना चाहते हैं और फिर इसे ओवरराइड करना चाहते हैं? या आप कुछ ऐसा सेट करना चाहते हैं जो $ var पर निर्भर करता है?

कुछ ऐसा जो मुझे बदलने के लिए उपयोगी पाते हैं, जो सीधे आप क्या पूछना नहीं है, लेकिन है कि इसी तरह की है, यह वह जगह है, से

function func() { 
    ... 
    if ($condition) { 
     do plenty 
     of things 
    } 
    else { 
     do plenty 
     of things 
    } 
} 

मैं आम तौर पर करने के लिए परिवर्तन करना चाहते, यही कारण है कि:

function func() { 
    ... 
    if ($condition) { 
     do plenty 
     of things 
     return; 
    } 
    do plenty 
    of things 
} 

यह आमतौर पर समझता है

बस खुद से पूछें: "अगर कोई मेरे कोड के बारे में कुछ नहीं जानता था, तो क्या उसे समझ में आएगा? या उसे?"

1

मैं पहली बार पसंद करता हूं (बुलियन के लिए अनावश्यक परीक्षण को छोड़कर) क्योंकि यह लगातार भाषाओं में काम करता है, विशेष रूप से उनको इसे सेट करने से पहले वेरिएबल घोषित करने की आवश्यकता होती है (और शायद इसे टाइप करें)।
जावा:

String foo = ""; 
if (var) { 
    foo = "Something"; 
} 

जावास्क्रिप्ट या JavaFX:

var foo = ""; 
if (var) { 
    foo = "Something"; 
} 

आदि
एक भी 3 फार्म का उपयोग कर सकते हैं, लेकिन अगर स्थिति (या काम) जटिल है, यह थोड़ा कम पढ़ी जा सकती है ।

संबंधित मुद्दे

 संबंधित मुद्दे