Ifølge kommentarerne, $products
blev initialiseret af en inkluderet fil, som var inkluderet i en funktion. Det definerer dens omfang til funktionen, snarere end globalt. Så du bliver nødt til at bruge global $products;
før du kalder 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...
}
Under alle omstændigheder finder jeg det lidt mere læsbart at bruge $GLOBALS['products']
i stedet for den global
søgeord. Og som altid, hvor det er muligt, er det en foretrukken praksis at overføre variablen til en funktion i stedet for at få adgang til den globalt.
// If you can, do it this way
function foo($bar, $products) {
// $products was a param, and so global is unnecessary
}
Men i dit tilfælde, hvis CMS'et definerer det, kan du miste fleksibiliteten til at gøre det på den måde...