动态地将关联多维数组添加到包含另一个关联多维数组数组的数组中?

时间:2015-11-10 16:04:58

标签: php arrays wordpress multidimensional-array associative-array

我正在尝试动态生成多维数组,其中$value对的$key=>$value是另一个多维数组。键将通过选择菜单动态生成(选择菜单本身是动态生成的,因此我不知道键的名称)。

这是一个WordPress插件,所以在下面的代码中有一些WP函数:

$var1 = $_POST['var1'];
$var2 = $_POST['var2'];
if (get_option('option_name') != null) {
     $option = get_option('option_name');
     $option[$var2] = array('sync'=>1,'setting1'=>$var2,'setting2'=>$var1);
     update_option('option_name', $option[$var2]);

} else {
    $option = array();
    $option[$var2] = array('sync'=>1,'setting1'=>$var2,'setting2'=>$var1);
    update_option('option_name', $option[$var2]);
}

基本上,这个的“else”部分表示get_option('option_name')为空或未设置,效果很好,在调用update_option函数后我得到:

Array
    (
        [firstvar2] => Array
            (
                [sync] => 1
                [setting1] => firstvar2
                [setting2] => firstvar1
            )

    )

这正是我想要的。我遇到的问题是当第一个关联数组已经存在时添加一个额外的关联数组。有条件的'if'部分给了我这个:

Array
    (
        [sync] => 1
        [setting1] => firstvar2 //(from the first run)
        [setting2] => firstvar1 //(from the first run)
        [secondvar2] => Array //(from the second run)
            (
                [sync] => 1
                [setting1] => secondvar2 //(from the second run)
                [setting2] => secondvar1 //(from the second run)
            )

    )

我怎样才能得到这个?:

Array
    (
        [firstvar2] => Array //first run
            (
                [sync] => 1 //first run
                [setting1] => firstvar2 //first run
                [setting2] => firstvar1 //first run
            )

        [secondvar2] => Array //second run
            (
                [sync] => 1 //second run
                [setting1] => secondvar2 //second run
                [setting2] => secondvar1 //second run
            )

    )

1 个答案:

答案 0 :(得分:0)

你应该更新所有$ option update_option( 'option_name', $option ); 发生的事情基本上是你总是设置$选项等于$option[ $var2 ]