sql >> Database teknologi >  >> RDS >> Mysql

Fejl ved brug af array_push -- Første argument skal være et array

Ifølge kommentarerne, $products blev initialiseret af en inkluderet fil, som var inkluderet i en funktion. Det definerer dens omfang til funktionen, snarere end globalt. Så du bliver nødt til at bruge global $products; før du kalder 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...
}

Under alle omstændigheder finder jeg det lidt mere læsbart at bruge $GLOBALS['products'] i stedet for den global søgeord. Og som altid, hvor det er muligt, er det en foretrukken praksis at overføre variablen til en funktion i stedet for at få adgang til den globalt.

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

Men i dit tilfælde, hvis CMS'et definerer det, kan du miste fleksibiliteten til at gøre det på den måde...



  1. Oracle SQL udviklerværktøj:Download og installation

  2. Sådan gør du:Rangering af søgeresultater

  3. Hvorfor stopper MySQL unix-tiden kort efter grænsen på 32 bit usigneret heltal?

  4. hvordan udtrækkes json-array som tabel fra mysql-tekstkolonne, når antallet af json-objekter i array er ukendt?