sql >> Base de Datos >  >> RDS >> Mysql

Errores al usar array_push:el primer argumento debe ser una matriz

Según los comentarios, $products fue inicializado por un archivo incluido que se incluyó dentro de una función. Eso define su alcance a la función, en lugar de globalmente. Por lo tanto, deberá usar global $products; antes de llamar al 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 cualquier caso, me parece un poco más legible usar $GLOBALS['products'] en lugar del global palabra clave. Y como siempre, siempre que sea posible, es una práctica preferida pasar la variable a una función en lugar de acceder a ella globalmente.

// If you can, do it this way
function foo($bar, $products) {
  // $products was a param, and so global is unnecessary
}

Sin embargo, en su caso, si el CMS lo define, puede perder la flexibilidad para hacerlo de esa manera...