2011-05-06 20 views
5

अगर मैं इस तरह एक समारोह है मैं सोच रहा था:php समारोह चर गुंजाइश

function isAdmin ($user_id) { 

    $admin_arr = array(1, 2); 

    foreach ($admin_arr as $value) { 

     if ($value == $user_id) { 
      return true; 
     } 
    } 

    return false; 
} 

मैं एक वैश्विक सरणी के रूप में है कि समारोह के बाहर एक सरणी बनाने के लिए और एक के रूप में यह के माध्यम से भेजे बिना समारोह के अंदर इसका इस्तेमाल कर सके पैरामीटर, फ़ंक्शन के अंदर एक नया व्यवस्थापक सरणी घोषित करने के बजाय, जैसा कि मैंने अभी ऊपर किया है? यह मैं कैसे करूंगा? यहाँ

// Global variable 
$admin_arr = array(1, 2); 

function isAdmin ($user_id) { 

    // Declare global 
    global $admin_arr; 

    foreach ($admin_arr as $value) { 

     if ($value == $user_id) { 
      return true; 
     } 
    } 

return false; 
} 

प्रलेखन:

सादर, अलेक्जेंडर

+0

आप यह क्यों चाहते हैं? यह संभव है, लेकिन अनुशंसित नहीं है। – Ikke

+0

हां आप कर सकते थे, लेकिन जितना संभव हो सके 'वैश्विक' से बचें। समारोह में इसे पास करने में समस्या क्या है? –

+0

मुझे लगता है कि यदि आप वास्तव में एक स्थिर है तो आप इसे निरंतर बनाने के लिए परिभाषित() का उपयोग कर सकते हैं। – albb

उत्तर

12

के साथ ऐसा करने शाब्दिक सवाल का जवाब देने के लिए है: http://php.net/manual/en/language.variables.scope.php

वास्तविक प्रश्न का उत्तर देने के लिए: हर कीमत पर वैश्विक से बचें। आप अपने आवेदन में त्रुटि प्रवण कोड का एक बड़ा हिस्सा पेश कर रहे हैं। वैश्विक चर पर निर्भर दर्द की दुनिया में प्रवेश कर रहा है और आपके कार्यों को कम उपयोगी बनाता है।

तब तक बचें जब तक आप बिल्कुल कोई अन्य तरीका नहीं देखते।

+2

+1 को परिभाषित नहीं कर सकते हैं कि यह सब के बाद एक क्रोधित विचार है। "दर्द की दुनिया" के लिए – halfdan

+2

+1: डी – KingCrunch

1

आप वैश्विक कीवर्ड

यहाँ

एक उदाहरण

$arr = array('bar'); 
function foo() { 
    global $arr; 
    echo array_pop($arr); 
} 
foo(); 
1

मैं दूसरों के साथ सहमत हूं कि यह करने का पसंदीदा तरीका नहीं है, और आपको पैरामीटर के रूप में सरणी पारित करनी चाहिए, लेकिन मैं सिर्फ $GLOBALS[] सुपरग्लोबल सरणी को इंगित करना चाहता था, जिसे मुझे global से अधिक पठनीय लगता है कीवर्ड।

$global_array = array(1,2,3); 

function myfunc() 
{ 
    echo $GLOBALS['global_array'][0]; 
    print_r($GLOBALS['global_array']); 
} 
संबंधित मुद्दे