टिप्पणियों के अनुसार, $products
एक सम्मिलित फ़ाइल द्वारा प्रारंभ किया गया था जिसे एक फ़ंक्शन के अंदर शामिल किया गया था। यह वैश्विक स्तर के बजाय, कार्य के दायरे को परिभाषित करता है। तो आपको global $products;
. का उपयोग करना होगा कॉल करने से पहले शामिल करें।
function func_that_defined_products() {
global $products;
include('file_that_defines_products.php');
}
// Now when called globally later, it will be at the correct scope.
function foo($bar)
{
global $products;
$query = 'SELECT p_name FROM 0_products WHERE p_category IN (' . $bar . ')';
// etc...
}
किसी भी मामले में, मुझे $GLOBALS['products']
का उपयोग करना थोड़ा अधिक पठनीय लगता है global
. के बजाय खोजशब्द। और हमेशा की तरह, जहां भी संभव हो, वैरिएबल को वैश्विक स्तर पर एक्सेस करने के बजाय किसी फ़ंक्शन में पास करना एक पसंदीदा अभ्यास है।
// If you can, do it this way
function foo($bar, $products) {
// $products was a param, and so global is unnecessary
}
हालांकि आपके मामले में, यदि सीएमएस इसे परिभाषित करता है तो आप इसे इस तरह करने के लिए लचीलापन खो सकते हैं...