Gemäß den Kommentaren $products
wurde durch eine eingeschlossene Datei initialisiert, die in eine Funktion eingeschlossen war. Das definiert seinen Geltungsbereich für die Funktion und nicht global. Sie müssen also global $products;
verwenden bevor das Include aufgerufen wird.
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...
}
Auf jeden Fall finde ich es etwas lesbarer, $GLOBALS['products']
zu verwenden statt global
Stichwort. Und wie immer ist es, wo immer möglich, eine bevorzugte Vorgehensweise, die Variable an eine Funktion zu übergeben, anstatt global darauf zuzugreifen.
// If you can, do it this way
function foo($bar, $products) {
// $products was a param, and so global is unnecessary
}
Wenn das CMS dies jedoch in Ihrem Fall definiert, verlieren Sie möglicherweise die Flexibilität, dies so zu tun ...