2013-05-02 5 views
15

असल में क्या हुआ अगर वहाँ कुछ इस तरह छोटा करने के लिए एक रास्ता है मैं सोच रहा हूँ: चर और ऑपरेटर हर बार दोहराए बिना इस तरह सेPHP में, क्या एक चर को कई मानों से तुलना करने का एक छोटा तरीका है?

if ($variable == "one" || $variable == "two" || $variable == "three") 

कि चर के खिलाफ परीक्षण किया जा सकता है या एक से अधिक मान के साथ तुलना में ।

उदाहरण के लिए, इस की तर्ज पर कुछ मदद कर सकता है:

if ($variable == "one" or "two" or "three") 

या कुछ भी है कि कम लिख कर का परिणाम है।

if (strstr('onetwothree', $variable)) 
//or case-insensitive => stristr 
बेशक

, तकनीकी तौर पर, यह सच वापस आ जाएगी अगर चर twothr है, इसलिए जोड़ने:

+0

मुझे एहसास हुआ कि मैंने पोस्ट करने के बाद। टिप के लिए धन्यवाद, ज़ाहिर है! – vertigoelectric

उत्तर

29

in_array() मैं

if (in_array($variable, array('one','two','three'))) { 
+2

मेरे लिए हमेशा बहुत तेज़ जॉन कोंडे: पी – brbcoding

+2

मैंने अपना प्रश्न पोस्ट करने के बाद इसे महसूस किया। मुझे लगता है कि मैं बंदूक कूद गया। यह एक बार फिर से कई चीजों की तुलना करते समय एक शानदार समाधान है और विशेष रूप से सहायक है। धन्यवाद। एक बार साइट मुझे जाने के बाद मैं इसे स्वीकार करूंगा। यह कहता है कि मुझे इंतजार करना है। – vertigoelectric

+1

@brbcoding, मैं अभी भी आपके प्रयासों की सराहना करता हूं। – vertigoelectric

0
$variable = 'one'; 
// ofc you could put the whole list in the in_array() 
$list = ['one','two','three']; 
if(in_array($variable,$list)){  
    echo "yep";  
} else { 
    echo "nope";   
} 
4

क्या उपयोग एक सरणी के निर्माण की जरूरत के बिना है "delimiters" आसान हो सकता है:

if (stristr('one/two/three', $variable))//or comma's or somehting else 
+0

मुझे लगता है कि आपके पास एक टाइपो है और "थॉथर" के बजाय "twothr" कहने का मतलब है, लेकिन जाहिर है, मुझे पता है कि आपका क्या मतलब है। किसी भी दर पर, यह एक और अच्छी रणनीति है, और वास्तव में, यह भी छोटा है। मैंने देखा कि आपने पहली बार 'स्ट्रस्ट्र' और दूसरी बार 'स्ट्रिस्ट' का इस्तेमाल किया था। अंतर क्या है? – vertigoelectric

+0

'strstr' एक _exact_ स्ट्रिंग मिलान (केससेन्सिव) 'स्ट्रिस्टर' के लिए दिखता है, 'i' एक केस-असंवेदनशील तुलना करता है। यह एकमात्र अंतर है। और हाँ, वह टूथ बकवास एक टाइपो था: पी –

+0

आह, ठीक है। यही मैंने सोचा था कि अंतर था। इसके अलावा 'thwothr' अभी भी एक टाइपो एक्सडी – vertigoelectric

0

स्विच मामले

switch($variable){ 
case 'one': case 'two': case 'three': 
    //do something amazing here 
break; 
default: 
    //throw new Exception("You are not worth it"); 
break; 
} 
0

preg_grep का उपयोग करते हुए छोटे और in_array का उपयोग कर से अधिक लचीला हो सकता है के साथ:

if (preg_grep("/(one|two|three)/i", array($variable))) { 
    // ... 
} 

क्योंकि वैकल्पिक ipattern modifier (मैं nsensitive) दोनों अपर और लोअर केस मिलान कर सकते हैं पत्र।

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