If else在PHP中使用数组


If else with array in PHP

我的代码需要帮助。if语句将检查会话中的用户权限。如果是admin,则会显示active()数组,如果不是,则不会显示active()。我是否可以优化此代码?我不想仅仅为了停用active()阵列而对同一代码编码两次?

if($_SESSION["s"]["user"]["typ"] == 'admin') {
$form["tabs"]['dns_soa'] = array (
    'title'     => "DNS Zone",
    'width'     => 100,
    'template'  => "templates/dns_soa_edit.htm",
    'fields'    => array (
    ##################################
    # Begin Datatable fields
    ##################################
        'update_acl' => array (
            'datatype'  => 'VARCHAR',
            'formtype'  => 'TEXT',
            'default'   => '',
            'value'     => '',
            'width'     => '30',
            'maxlength' => '255'
        ),
        'active' => array (
            'datatype'  => 'VARCHAR',
            'formtype'  => 'CHECKBOX',
            'default'   => 'Y',
            'value'     => array(0 => 'N',1 => 'Y')
        ),
    ##################################
    # ENDE Datatable fields
    ##################################
    )
);
}
else {
$form["tabs"]['dns_soa'] = array (
    'title'     => "DNS Zone",
    'width'     => 100,
    'template'  => "templates/dns_soa_edit.htm",
    'fields'    => array (
    ##################################
    # Begin Datatable fields
    ##################################
        'update_acl' => array (
            'datatype'  => 'VARCHAR',
            'formtype'  => 'TEXT',
            'default'   => '',
            'value'     => '',
            'width'     => '30',
            'maxlength' => '255'
        ),
    ##################################
    # ENDE Datatable fields
    ##################################
    )
);  
}

提前谢谢。

这应该很容易

$form["tabs"]['dns_soa'] = array (
    'title'     => "DNS Zone",
    'width'     => 100,
    'template'  => "templates/dns_soa_edit.htm",
    'fields'    => array (
    ##################################
    # Begin Datatable fields
    ##################################
        'update_acl' => array (
            'datatype'  => 'VARCHAR',
            'formtype'  => 'TEXT',
            'default'   => '',
            'value'     => '',
            'width'     => '30',
            'maxlength' => '255'
        ),
        'active' => array (
            'datatype'  => 'VARCHAR',
            'formtype'  => 'CHECKBOX',
            'default'   => 'Y',
            'value'     => array(0 => 'N',1 => 'Y')
        ),
    ##################################
    # ENDE Datatable fields
    ##################################
    )
);
if($_SESSION["s"]["user"]["typ"] != 'admin') {
    unset($form["tabs"]['dns_soa']['fields']['active']);
}

这应该做到:

$form["tabs"]['dns_soa'] = array (
    'title'     => "DNS Zone",
    'width'     => 100,
    'template'  => "templates/dns_soa_edit.htm",
    'fields'    => array (
    ##################################
    # Begin Datatable fields
    ##################################
        'update_acl' => array (
            'datatype'  => 'VARCHAR',
            'formtype'  => 'TEXT',
            'default'   => '',
            'value'     => '',
            'width'     => '30',
            'maxlength' => '255'
        ),
    ##################################
    # ENDE Datatable fields
    ##################################
    )
);
if($_SESSION["s"]["user"]["typ"] == 'admin') {
    $form["tabs"]['dns_soa']['active'] =array (
            'datatype'  => 'VARCHAR',
            'formtype'  => 'CHECKBOX',
            'default'   => 'Y',
            'value'     => array(0 => 'N',1 => 'Y')
        );
}

稍后,为了显示,您可以使用isset 检查活动的存在

if (isset($form["tabs"]['dns_soa']['active']))
{
    // do something with it
}

首先初始化不带$active数组的数组,然后在用户是管理员时添加它:

$form["tabs"]['dns_soa'] = array (
    'title'     => "DNS Zone",
    'width'     => 100,
    'template'  => "templates/dns_soa_edit.htm",
    'fields'    => array (
    ##################################
    # Begin Datatable fields
    ##################################
        'update_acl' => array (
            'datatype'  => 'VARCHAR',
            'formtype'  => 'TEXT',
            'default'   => '',
            'value'     => '',
            'width'     => '30',
            'maxlength' => '255'
        )
    ##################################
    # ENDE Datatable fields
    ##################################
    )
);
if($_SESSION["s"]["user"]["typ"] == 'admin') {
  $form["tabs"]["dns_soa"]["active"] = array (
            'datatype'  => 'VARCHAR',
            'formtype'  => 'CHECKBOX',
            'default'   => 'Y',
            'value'     => array(0 => 'N',1 => 'Y')
        );
}

类似的Soemthing

$form["tabs"]['dns_soa'] = array ( 
'title'     => "DNS Zone", 
'width'     => 100, 
'template'  => "templates/dns_soa_edit.htm", 
'fields'    => array ( 
    'update_acl' => array ( 
        'datatype'  => 'VARCHAR', 
        'formtype'  => 'TEXT', 
        'default'   => '', 
        'value'     => '', 
        'width'     => '30', 
        'maxlength' => '255' 
    ),
    )
);
if($_SESSION["s"]["user"]["typ"] == 'admin') { 
     $form["tabs"]['dns_soa'][fields]['active'] = array (      
        'datatype'  => 'VARCHAR',      
        'formtype'  => 'CHECKBOX',      
        'default'   => 'Y',      
        'value'     => array(0 => 'N',1 => 'Y')      
    );
}

还没有尝试过,但你得到了

的想法
// Presume user is NOT admin and populate $form
$form["tabs"]['dns_soa'] = array (
    'title'     => "DNS Zone",
    'width'     => 100,
    'template'  => "templates/dns_soa_edit.htm",
    'fields'    => array (
        'update_acl' => array (
            'datatype'  => 'VARCHAR',
            'formtype'  => 'TEXT',
            'default'   => '',
            'value'     => '',
            'width'     => '30',
            'maxlength' => '255'
        )
    )
);
##################################
# ENDE Datatable fields
##################################  
if($_SESSION["s"]["user"]["typ"] == 'admin') {
$form["tabs"]['dns_soa']['fields']['active'] = array (
##################################
# Begin Datatable fields
##################################
        'datatype'  => 'VARCHAR',
        'formtype'  => 'CHECKBOX',
        'default'   => 'Y',
        'value'     => array(0 => 'N',1 => 'Y')
    );
##################################
# ENDE Datatable fields
##################################

}