2011-10-24 46 views
2

我需要幫助我的代碼。從下面陣列取消設置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);多少次?提前致謝。

更新 - 我的歉意我應該提供更多信息。你如何禁用3陣列中的2個?例如,只需禁用['xfer']和['active']?

回答

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(); 

UPDATE:

要取消只是沒在代碼重複unset多次鍵的特定子集,我會做一個循環:

foreach (array('xfer', 'active') as $field) { 
    unset($form["tabs"]['dns_soa']['fields'][$field]); 
} 
+0

我的歉意我應該提供更多信息。你如何禁用3陣列中的2個?例如,只需禁用['xfer']和['active']? – sg552

+0

@ sg552:檢查更新。 –

+0

aahh foreach。我已經在班上學到了這一點。非常感謝您的先生/女士。你節省了時間:) – sg552

1

如果你想取消設置的所有子陣中fields,你可以使用:

unset($form["tabs"]['dns_soa']['fields']); 

編輯:在這種情況下,你能做的最好是使用的或的foreach。

+0

我道歉,我應該提供更多的信息。你如何禁用3陣列中的2個?例如,只需禁用['xfer']和['active']? – sg552

1

如果它是你打算頻繁使用的東西,你可以只創建一個函數來幫助速記它:

<?php 
function unset_array($keys, &$arr) { 
    foreach($keys as $key) { 
     unset($arr[$key]); 
    } 
} 

unset_array(array('xfer', 'active'), $arr['tabs']['dns_soa']); 
?> 
+0

嘿謝謝我會檢查出來。感謝您試圖幫助我:) – sg552