Php 如果阵列不存在,则向阵列中添加新阵列

Php 如果阵列不存在,则向阵列中添加新阵列,php,arrays,Php,Arrays,我目前在layout.php中有这个数组 <?php $arrLayout = array( "section1" => array( "wControl" => array( "title" => "Control", "display" => "" ), "wRecentTV" => array( "title" => "R

我目前在layout.php中有这个数组

<?php
$arrLayout = array(
    "section1" => array(
        "wControl" => array(
            "title" => "Control",
            "display" => ""
        ),
        "wRecentTV" => array(
            "title" => "Recent TV",
            "display" => ""
        )
    ),
    "section2" => array(
        "wXBMCLibrary" => array(
            "title" => "XBMC Library",
            "display" => ""
        )
    ),
    "section3" => array(
        "wSearch" => array(
            "title" => "Search",
            "display" => ""
        ),
        "wRSS" => array(
            "title" => "RSS Feed",
            "display" => ""
        )
    ),

);
?>
到和之间的第x节末尾,并重写该文件

基本上,任何一个部分都可能存在或不存在wControl。因此,如果它不存在,则必须将其添加到数组中,并且必须重写layout.php以显示它。希望一切都有意义

根据我所能收集的信息,我可以检查它是否在数组中,然后用

if (!in_array( wControl, $arrLayout ))  
 array_push(..)
我该如何正确地编写代码


谢谢

如果可能的话,如果XML文件是文件的唯一内容,我建议您使用XML文件。使用XML解析器比解析和重写PHP文件更容易。是的,这是唯一的内容。我会调查的。谢谢你。似乎工作完美!我可以选择添加到哪个部分吗?如果这会使它成为一个巨大的麻烦,那么不用担心:什么是“第二部分”;对于接近最底部的部分?计算出来,这是它必须进入的部分:
if (!in_array( wControl, $arrLayout ))  
 array_push(..)
<?php
/**
 * @param array $sections
 * @param string $name name of new key (like wControl)
 * @param mixed $value value of new key
 * @param string $into_section if empty, last section will be used
 * @return bool
 */
function addUnique(array &$sections, $name, $value, $into_section = '')
{
    $last_section = '';
    foreach ($sections as $section_name => $section)
    {
        if (key_exists($name, $section)) return false;
        $last_section = $section_name;
    }
    if (empty($into_section)) $into_section = $last_section;
    $sections[$into_section][$name] = $value;
}

$arrLayout = array(
    "section1" => array(
        "wControl" => array(
            "title" => "Control",
            "display" => ""
        ),
        "wRecentTV" => array(
            "title" => "Recent TV",
            "display" => ""
        )
    ),
    "section2" => array(
        "wXBMCLibrary" => array(
            "title" => "XBMC Library",
            "display" => ""
        )
    ),
    "section3" => array(
        "wSearch" => array(
            "title" => "Search",
            "display" => ""
        ),
        "wRSS" => array(
            "title" => "RSS Feed",
            "display" => ""
        )
    ),

);

$wControl = true;

if ($wControl)
{
    addUnique($arrLayout, 'wControlNew', array(
                                              "title" => "Control",
                                              "display" => ""
                                         ),
              'section2');
}

var_dump($arrLayout);