Bert Maurau
Bert Maurau

Reputation: 979

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 import_soldenperc.store = 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';
    ....
    ....
    foreach($headValue..
       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).

Thanks!

Upvotes: 0

Views: 569

Answers (2)

Patrik Krehák
Patrik Krehák

Reputation: 2683

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.

Upvotes: 2

RisingSun
RisingSun

Reputation: 1733

Instead of including the file at the top of the page, move it where you need it so the variable are set first and then you include the file.

Upvotes: 1

Related Questions