#php #arrays #unset
#php #массивы #сбросить
Вопрос:
Мне нужна помощь с моим кодом. Чтобы сбросить массив 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, я делаю это. ОБНОВЛЕНИЕ — на самом деле у меня много массивов в «полях», но я просто предоставляю 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);
многократного кодирования? Заранее спасибо.
ОБНОВЛЕНИЕ — Мои извинения, я должен предоставить больше информации. Как отключить 2 из 3 массивов? Например, просто отключить [‘xfer’] и [‘active’]?
Ответ №1:
Вы можете просто сказать:
// 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. Мои извинения, я должен предоставить больше информации. Как отключить 2 из 3 массивов? Например, просто отключить [‘xfer’] и [‘active’]?
2. aahh foreach. Я уже изучал это в своем классе. Большое вам спасибо, сэр / мадам. Вы экономите время 🙂
Ответ №2:
Если вы планируете часто использовать это, вы можете просто создать функцию, которая поможет сократить ее:
<?php
function unset_array($keys, amp;$arr) {
foreach($keys as $key) {
unset($arr[$key]);
}
}
unset_array(array('xfer', 'active'), $arr['tabs']['dns_soa']);
?>
Комментарии:
1. привет, спасибо, я это проверю. Спасибо, что пытались мне помочь 🙂
Ответ №3:
Если вы хотите сбросить все подмассивы fields
, вы можете использовать:
unset($form["tabs"]['dns_soa']['fields']);
Редактировать: в этом случае лучшее, что вы можете сделать, это использовать for или foreach .
Комментарии:
1. Мои извинения, я должен предоставить больше информации. Как отключить 2 из 3 массивов? Например, просто отключить [‘xfer’] и [‘active’]?