Selon les commentaires, $products
a été initialisé par un fichier inclus qui a été inclus dans une fonction. Cela définit sa portée à la fonction, plutôt que globalement. Vous devrez donc utiliser global $products;
avant d'appeler l'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...
}
En tout cas, je trouve un peu plus lisible d'utiliser $GLOBALS['products']
au lieu du global
mot-clé. Et comme toujours, dans la mesure du possible, il est préférable de passer la variable dans une fonction plutôt que d'y accéder globalement.
// If you can, do it this way
function foo($bar, $products) {
// $products was a param, and so global is unnecessary
}
Cependant, dans votre cas, si le CMS le définit, vous risquez de perdre la flexibilité de le faire de cette façon...