Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Fehler bei der Verwendung von array_push -- Das erste Argument sollte ein Array sein

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 ...