Enligt kommentarerna, $products
initierades av en inkluderad fil som ingick i en funktion. Det definierar dess omfattning till funktionen, snarare än globalt. Så du måste använda global $products;
innan du anropar include.
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...
}
Jag tycker i alla fall att det är lite mer läsbart att använda $GLOBALS['products']
istället för den global
nyckelord. Och som alltid, där det är möjligt är det en föredragen praxis att överföra variabeln till en funktion snarare än att få tillgång till den globalt.
// If you can, do it this way
function foo($bar, $products) {
// $products was a param, and so global is unnecessary
}
Men i ditt fall, om CMS definierar det kan du förlora flexibiliteten att göra det på det sättet...