2016-12-16 109 views
0

我正在嘗試構建一個函數來生成我的菜單條。從具有多個輸入的數組到具有varnames的if語句PHP

到目前爲止,我有以下完成:

與所需的信息創建一個數組:

$MENU_GEN["MENUNAME"] = array(
    'enabled'=>true, 
    'parent'=>true, 
    'headline'=>"Wareneingang", 
    'access'=>'99,50,25', 
    'activelink'=>'$linkvar', 
    'buttonvalue'=>'wareneingang', 
    'sub_menus'=>array() 
); 

問題是我想要的「訪問」分裂了(因爲每個menupoint可以有更多或更少訪問級別)。

我試圖splitt訪問像這樣:

$access_split = $item['access']; 
$splitter = explode(",",$access_split); 
$prefixed_split = preg_filter('/^/','$user_level == ',$splitter); 
$buildaccess = implode("||",$prefixed_split); 

偉大的工程。現在來了我的棘手部分。我想建立我的if語句從那裏至極應該是這樣的:

if($user_level == 99 || $user_level == 50){ 

但是,如果我嘗試建立起來的一切,if語句似乎是空白的,因爲如果改變我的訪問級別或數組中更改數值甚至不存在的東西,它只是解析一切,因爲沒有如果聲明...

我做錯了什麼? 有沒有一種方法來格式化字符串以再次被接受爲代碼? (我已閱讀了有關eval()函數的一些內容,但我沒有得到它的工作...)

對不起,我的英語。我不是一個母語:'d

回答

0

當然,你可以只是分裂access值:

$MENU_GEN["MENUNAME"]['access'] = explode(',' $MENU_GEN["MENUNAME"]['access']); 

然後用in_array你的病情:

if(in_array($user_level, $MENU_GEN["MENUNAME"]['access'])) { 
+0

對不起我想我已經有點unXcear xx「我想有我的if語句創建。但in_array比較數組內容,不是嗎? 我想使用acces中給出的數字來創建if($ user_level == $ number)除了使它變化並在這裏添加多個$ user_level == $數字:) 希望它現在更清晰T_T「 – Pabumake

+0

您想在運行時動態生成代碼嗎?不是一個好主意。 – Seb

+0

那麼這段代碼永遠不會在互聯網上運行它只是內部。受到入侵者的防火牆保護,所以我不介意它的不安全。 ofc我寧願它是安全的,但我也想避免數據庫和選項總是添加和混合PHP/HTML所有的時間來生成導航欄。 – Pabumake