Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Erros ao usar array_push -- O primeiro argumento deve ser um array


De acordo com os comentários, $products foi inicializado por um arquivo incluído que foi incluído dentro de uma função. Isso define seu escopo para a função, em vez de globalmente. Portanto, você precisará usar global $products; antes de chamar o 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...
}

De qualquer forma, acho um pouco mais legível usar $GLOBALS['products'] em vez do global palavra-chave. E, como sempre, sempre que possível, é uma prática preferida passar a variável para uma função em vez de acessá-la globalmente.
// If you can, do it this way
function foo($bar, $products) {
  // $products was a param, and so global is unnecessary
}

No entanto, no seu caso, se o CMS definir, você pode perder a flexibilidade de fazer dessa maneira...