我的代码需要帮助。要从下面的数组中取消设置xfer数组:
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
##################################
'xfer' => array (
'datatype' => 'VARCHAR',
'formtype' => 'TEXT',
'default' => '',
'value' => '',
'width' => '30',
'maxlength' => '255'
),
'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
##################################
)
);
}
我只是:
unset($form["tabs"]['dns_soa']['fields']['xfer']);
并且取消所有3我这样做。更新 - 实际上我在'fields'中有很多数组,但我只提供3:
unset($form["tabs"]['dns_soa']['fields']['xfer']);
unset($form["tabs"]['dns_soa']['fields']['update_acl']);
unset($form["tabs"]['dns_soa']['fields']['active']);
无论如何,我可以在没有编码的情况下解开很多阵列
unset($form["tabs"]['dns_soa']['fields']array name here);
很多次?提前谢谢。
更新 - 道歉我应该提供更多信息。如何禁用3个数组中的2个?例如,只需禁用['xfer']和['active']?
答案 0 :(得分:3)
你可以说:
// to unset the parent "fields" array, which includes xfer, update_acl and active
unset($form["tabs"]['dns_soa']['fields']);
或
// just to reset the fields array
$form["tabs"]['dns_soa']['fields'] = array();
更新:
要取消设置密钥的特定子集而不在代码中多次重复unset
,我会做一个循环:
foreach (array('xfer', 'active') as $field) {
unset($form["tabs"]['dns_soa']['fields'][$field]);
}
答案 1 :(得分:1)
如果要取消设置fields
中的所有子数组,可以使用:
unset($form["tabs"]['dns_soa']['fields']);
修改:在这种情况下,您可以做的最好是使用for或foreach。
答案 2 :(得分:1)
如果您打算经常使用它,您可以创建一个功能来帮助缩写它:
<?php
function unset_array($keys, &$arr) {
foreach($keys as $key) {
unset($arr[$key]);
}
}
unset_array(array('xfer', 'active'), $arr['tabs']['dns_soa']);
?>