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