Bert Maurau Bert Maurau - 1 year ago 85
PHP Question

PHP Reload Variable in array value

I'm having a little issue with a variable declaration and value inside an array value. Let me explain:

The situation:
I have a 'Require' at the top of my script. Inside this require, there is an array with this content:

$oModules[5]['QUERY'] = array(
'UPDATE voorraad INNER JOIN import_soldenperc ON import_soldenperc.barbodykleur = voorraad.barbodykleur '.(($trigger_filter_store) ? 'AND = voorraad.mag' : '' ) SET voorraad.solden_pct = import_soldenperc.solden_pct, voorraad.solden_vp = 0, voorraad.solden_sta = DATE(import_soldenperc.solden_sta), voorraad.solden_end = DATE(import_soldenperc.solden_end);'

As you can see, there is a Variable 'trigger' inside this array value.

The issue:
This variable gets set after my require

require_once 'application.php';
if('store' == $fieldValue){
$trigger_filter_store = true;

Then at the bottom of my script, there is a function that calls my array value:

foreach ($oModules[$_SESSION['module_id']]['QUERY'] as $Query){
//Execute query

The problem:
My $trigger_filter_store variable gets set at the start, together with the require (which parses the array value to a concated string).

How can I "reload" or "reset" this [QUERY] string with the updated $trigger_filter_store ?

This is a running script where I can't add a lot of changes, because it's a import page that executes the necessary queries, depending on which module is selected in the application.php module-array and I don't want to "break" the entire array-setup.

The only "simple" solution I thought of, was to require my application.php after the variable has been set, but I use some functions from the application.php before I set my variable.

I'm out of ideas really (without breaking the entire script).


Answer Source

You can either use @khuderm solution and use that require after setting the variable, or you can do this:

$oModules[5]['QUERY'] = array(
    function($trigger_filter_store) {
        return 'UPDATE voorraad INNER JOIN import_soldenperc...';

and then call the function with $Query($trigger_filter_store); in your foreach.

Recommended from our users: Dynamic Network Monitoring from WhatsUp Gold from IPSwitch. Free Download