2010-01-24 7 views
7

मैं वर्तमान में एक डाउनलोड प्रबंधक की तरह लिख रहा हूँ और मैं अपने आप को पूछ रहा था कि यदि संभव हो गया था:

if($ext == ('zip' || 'png')) { echo "Is it possible ?" } 

यह सच हर देता है, इसलिए मुझे लगता है कि यह संभव नहीं है। लेकिन क्या आपको पता है कि मैं इसे आसानी से कैसे कर सकता हूं? मेरा मतलब है, बहुत सारे "अगर" या "स्विच" के साथ ...

वैसे भी धन्यवाद! :)

उत्तर

22

आप in_array($ext,array('png','zip','another','more'))

इस्तेमाल कर सकते हैं यहाँ देखें: http://php.net/manual/en/function.in-array.php

+0

यह भी काम करता है, लेकिन क्या यह regex से तेज है? – Minishlink

+0

नहीं, शायद आप इसे करने के समय पर निर्भर करता है ... किसी भी तरह, यह पहली बात थी, जो मेरे दिमाग में आ गई थी :) –

+1

@ मिनिशलिंक: शायद दोनों ओ (एन) है हालांकि नियमित अभिव्यक्ति को पार्स करना और डीएफए का निर्माण समय भी लेता है। – Gumbo

3

आप नियमित अभिव्यक्तियों का उपयोग कर सकते हैं, उदा।

if(preg_match("/^(zip|png)$/", $ext) { echo “It is possible!” } 

संबंधित प्रश्न: Checking for file-extensions in PHP with Regular expressions

+0

हे भगवान, मैं पूरी तरह से regex भूल गया है ... धन्यवाद !! =) – Minishlink

+6

यह रेगेक्स के खराब उपयोग की तरह लगता है, और वर्तमान समस्या का एक खराब समाधान है। –

4

आप एक switch-case बयान के साथ जा सकते हैं:

switch($ext) 
{ 
    case 'png': 
    case 'zip': 
     // Will run for both 'png' and 'zip' 
     echo "It is possible"; 
     break; 
    default: 
     echo "unknown extension!"; 
     break; 
} 
+0

हां, लेकिन मैं $ ext में प्रत्येक एक्सटेंशन के लिए एक ही निर्देश करना चाहता हूं; तो यह इस समाधान के साथ बहुत लंबा है ... वैसे भी धन्यवाद! :) – Minishlink

+1

मुझे समझ में नहीं आता है। यह स्विच-केस वही करेगा जो आप अपने मूल कोड के साथ चाहते थे। प्रत्येक बार $ ext में या तो पीएनजी या ज़िप होता है, "यह संभव है" आउटपुट होगा। –

+1

@Minishlink यह लंबा हो सकता है, लेकिन इसे बनाए रखना बहुत आसान है। ऐसा मत सोचो कि संक्षिप्त कोड == बेहतर कोड। यह पेशेवर और विपक्ष है। – CodeMonkey

3
if(($ext == 'zip') || ($ext == 'png')) { echo "It's possible." } 
+0

मुझे यह समाधान भी मिला है, लेकिन जब मेरे पास बहुत सारे एक्सटेंशन हैं तो लिखना बहुत लंबा है। वैसे भी धन्यवाद ! :) – Minishlink

1
if (in_array($ext, array('png', 'zip'))) { 
    echo "Is it possible ?" 
} 

सरणी, कहीं संग्रहित किया जा सकता है अगर आप इसे एक से अधिक बार की जरूरत है।

10

if($ext == ('zip' || 'png')) निम्नलिखित क्रम में तुलना कर रहा है ->('zip' || 'png'), क्योंकि कम से कम एक शून्य नहीं है, सत्य लौटाता है। यह बताएं कि अब, ($ext == TRUE), जो मैं एक अंग पर बाहर जा रहा हूं और अनुमान लगाता हूं कि PHP केवल उसी का मूल्यांकन कर रहा है जैसे ($ext), जो भी सच है।

if ($ext == 'zip' || $ext == 'png') आप के लिए क्या देख रहे की जाँच करेगा।

2

यह निश्चित रूप से संभव है, लेकिन क्या आप कर रहे हैं इसमें गलत कोड है। यहाँ

if($ext == ('zip' || 'png')) { echo "Is it possible ?" } 

और क्या है कि php में करने के लिए अनुवाद है: यहाँ आप क्या लिखा है

if((if $ext evaluates to true then return true) == (if 'zip' evaluates to true then return true || if 'png' evaluates to true then return true)) 

तो, 'जिप' के बाद से 'खाली' या 'झूठा' में से एक मान नहीं है php में परिभाषित है, और न तो 'png' आप मूल रूप से इस अगर बयान चला रहे है:

if($ext == true) 

कौन सा है, अगर यह खाली नहीं है, यह करता है।

क्या आप चाहते हैं है - जैसा कि पहले उल्लेख के रूप में:

if($ext == 'zip' || $ext == 'png') 
2

टिनी सलाह: पीएचपी एक भावना है कि वास्तव में किसी भी गैर शून्य मान "सही" में माना जाता है में सी बूलियन प्रकार से निपटने के लिए इसी तरह का उपयोग करता है if- कथन के सशर्त हिस्से में रहने का मामला। उदाहरण के लिए यदि आप तुलना निर्माण में '=' ​​प्रतीक अनदेखा कर देते हैं और टाइप if($var = "val")if($var == "val") के बजाय आप हमेशा कि बयान में एक सही मूल्य मिलेगा, क्योंकि '=' ऑपरेटर सही हिस्सा "से सेट आपरेशन मूल्य का एक परिणाम के रूप में वापसी होगी वैल "है जो बारी-बारी से 'सत्य' में परिवर्तित हो जाता है।तो तुलनात्मक स्थिति if("val" == $var) की स्थिति के बाएं हिस्से में शाब्दिक लिखना बेहतर है, इस परिस्थिति में आपको एक त्रुटि मिलेगी यदि आप '=' प्रतीक को '==' तुलना में खो देते हैं।

तो अपने अगर बयान इस तरह दिखना चाहिए: if('zip' == $ext || 'png' == $ext) { echo "Is it possible ?" }

भी शायद यह बेहतर होगा 'जिप' रख दिया और 'png' के साथ नाम FILE_TYPE_ZIP, FILE_TYPE_PNG स्थिरांक में शाब्दिक या कुछ प्रगणित-इकाई को परिभाषित करने के वैश्विक PHP-array की तरह जो आपके स्रोत-पृष्ठ के शीर्ष पर रहता है या शायद बाहरी फ़ाइल में कुछ अलग-अलग वर्ग समर्थित फ़ाइल प्रकार भी बनाता है जो आपके प्रोग्राम के समर्थित फ़ाइल प्रकारों पर जोर देगा (उस स्थिति में विवरण के लिए PHP and Enumerations देखें)।

प्रदर्शन के प्रश्न को विकसित करने की शुरुआत में आपको परेशान करने की आवश्यकता नहीं है क्योंकि यह कोड लिखना महत्वपूर्ण है जो भविष्य में पढ़ने और विकसित/अनुकूलित करने में आसान है।

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