コメントによると、$products
関数内に含まれているインクルードファイルによって初期化されました。これは、グローバルではなく、関数に対するスコープを定義します。したがって、global $products;
を使用する必要があります インクルードを呼び出す前に。
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...
}
いずれにせよ、$GLOBALS['products']
を使用する方が少し読みやすいと思います。 global
の代わりに キーワード。そしていつものように、可能な限り、変数をグローバルにアクセスするのではなく、関数に渡すことをお勧めします。
// If you can, do it this way
function foo($bar, $products) {
// $products was a param, and so global is unnecessary
}
ただし、あなたの場合、CMSがそれを定義していると、そのようにする柔軟性が失われる可能性があります...