Според коментарите, $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
}
Във вашия случай обаче, ако CMS го дефинира, може да загубите гъвкавостта да го правите по този начин...