2014-09-30 44 views
0

我正在PHP中開發一個OpenSource項目,我需要操作選項數組。操作選項數組

我正在尋找做這些東西的功能,這裏下面是我想要做的例子。 我不知道這是否是正確的方式來管理這個,也許還有其他一些選擇,或者可能是已經創建的類可以處理所有這些,我都對解決方案開放。

// Define an array of options 
$arr = array(
    'options' => array(
    'levelA' => array(
     'property1' => 'value1', 
     'property2' => 'value2', 
    ), 
    'levelB' => array(
     'property3' => 'value3', 
     'property4' => 'value4', 
    ), 
    'levelC' => array(
     'property5' => 'value5', 
     'property6' => 'value6', 
    ) 
) 
) 

// Remove the property5 in levelC in options. 
$arr = array_delete_value($arr, array('options', 'levelC', 'property5')); 

// Result array 
$arr = array(
    'options' => array(
    'levelA' => array(
     'property1' => 'value1', 
     'property2' => 'value2', 
    ), 
    'levelB' => array(
     'property3' => 'value3', 
     'property4' => 'value4', 
    ), 
    'levelC' => array(
     'property6' => 'value6', 
    ) 
) 
) 

// Delete the levelB in options. 
$arr = array_delete_value($arr, array('options', 'levelB')); 

// Result array 
$arr = array(
    'options' => array(
    'levelA' => array(
     'property1' => 'value1', 
     'property2' => 'value2', 
    ), 
    'levelC' => array(
     'property6' => 'value6', 
    ) 
) 
) 

// Set a new value in the options in options -> levelD -> property7. Create it if needed. 
$arr = array_set_value(array('options', 'levelD', 'property7'), 'value7'); 

// Result array 
$arr = array(
    'options' => array(
    'levelA' => array(
     'property1' => 'value1', 
     'property2' => 'value2', 
    ), 
    'levelC' => array(
     'property6' => 'value6', 
    ), 
    'levelD' => array(
     'property7' => 'value7', 
    ) 
) 
) 

// Create an array of options in options -> levelD 
$arr = array_set_value(array('options', 'levelD'), array('property8' => 'value8', 'property9' => 'value9')); 

// Result array 
$arr = array(
    'options' => array(
    'levelA' => array(
     'property1' => 'value1', 
     'property2' => 'value2', 
    ), 
    'levelC' => array(
     'property6' => 'value6', 
    ), 
    'levelD' => array(
     'property8' => 'value8', 
     'property9' => 'value9', 
    ) 
) 
) 
+3

那麼問題是什麼? – Utkanos 2014-09-30 17:31:23

+1

這看起來像對象材料 - 數據結構和事務非常複雜,並且自己成爲一個類。 – 2014-09-30 17:36:46

回答

1

您可以從陣列做刪除值unset

unset($arr['options']['levelC']['property5']); 

你也可以簡單地通過做

$arr['options']['levelD'] = array('property8' => 'value8', 'property9' => 'value9'); 

我建議找添加的東西到PHP​​數組更成什麼Arrays in PHP能做。

如果不需要,不要重新發明輪子。我不確定你爲什麼需要一個班級來創建這些。也許你可以在我的評論中澄清?無論如何,如果您必須編寫一個自己的類來執行更復雜的任務,那麼您至少可以利用上面指定的函數。