操作选项数组

时间:2014-09-30 17:30:06

标签: php arrays multidimensional-array

我正在用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',
    )
  )
)

2 个答案:

答案 0 :(得分:1)

您可以从执行unset的数组中删除值,即

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

您也可以通过

简单地将内容添加到php数组中
$arr['options']['levelD'] = array('property8' => 'value8', 'property9' => 'value9');

我建议更多地了解Arrays in PHP可以做些什么。

如果你不需要,不要重新发明轮子。我不确定为什么你需要一个类来创建这些。也许你可以在评论中澄清一下?无论如何,如果你必须编写自己的类来执行更复杂的任务,你至少可以利用我上面指定的函数。

答案 1 :(得分:0)