Podle komentářů $products
byl inicializován zahrnutým souborem, který byl součástí funkce. To definuje její rozsah pro funkci, nikoli globálně. Budete tedy muset použít global $products;
před voláním 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...
}
V každém případě mi připadá trochu čitelnější použít $GLOBALS['products']
místo global
klíčové slovo. A jako vždy, všude, kde je to možné, je preferovanou praxí předat proměnnou do funkce spíše než k ní přistupovat globálně.
// If you can, do it this way
function foo($bar, $products) {
// $products was a param, and so global is unnecessary
}
Nicméně ve vašem případě, pokud to CMS definuje, můžete ztratit flexibilitu dělat to tímto způsobem...