2016-11-25 119 views
0

我在數組值的變量聲明和值有一點問題。讓我解釋一下:PHP Reload數組中的變量值

這種情況: 我在腳本的頂部有'Require'。這裏面需要,沒有與此內容的數組:

....  
$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);' 
); 
.... 

正如你所看到的,有這個數組裏面的值可變「觸發」。

問題: 此變量被設置後,我需要

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

然後在我的腳本的底部,有一個叫我的數組值的函數:

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

的問題: 我的$ trigger_filter_store變量在開始時與require(它將數組值解析爲一個拼接字符串)一起設置。

如何才能「更新」或「重置」此[QUERY]字符串與更新的$ trigger_filter_store?

這是一個正在運行的腳本,我無法添加很多更改,因爲它是一個導入頁面,它執行必要的查詢,具體取決於application.php模塊中選擇哪個模塊,而且我不想要「中斷」整個陣列設置。

我想到的唯一「簡單」解決方案是在設置變量後要求我的application.php,但我使用application.php中的一些函數,然後設置變量

我真的沒有想法(沒有打破整個腳本)。

謝謝!

回答

2

您可以使用@khuderm解決方案,並使用require設置變量之後,或者你可以這樣做:

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

,然後在你的foreach調用函數與$Query($trigger_filter_store);

+0

完美!簡單而有效!謝謝!我之所以不需要我的變量,是因爲我在設置變量之前使用了一些數組值;) –

+0

是的,我在前面的問題上讀到了,歡迎您。 – debute

1

不是將文件包含在頁面的頂部,而是將它移動到需要的位置,以便首先設置變量,然後包含該文件。

+0

這是我的第一個想法,但問題是,在設置我的變量之前,我使用該數組中的其他值。所以我必須在設置我的變量之前和之後需要2個不同的部分 –