2011-08-13 23 views
0

目前,我有這個數組中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" => "" 
     ) 
    ), 

); 
?> 

我想所以說什麼。如果($ wControl ==「真」)和「wControl」不在任何部分,然後寫

, 
"wControl" => array(
      "title" => "Control", 
      "display" => "" 
     ) 

的之間部分x)和)的結束,並重寫文件。

基本上wControl可能會或可能不會存在於任何一個部分。所以如果它不存在,它必須被添加到數組中,並且必須重寫layout.php才能顯示它。希望一切都有意義。

從我可以聚集我可以檢查數組其,然後用

if (!in_array(wControl, $arrLayout)) 
array_push(..) 

推我將如何正確的代碼呢?

感謝

+0

如果可能的話,我建議你使用XML文件,你在做什麼(如果這是文件的唯一內容)。我會比解析和重寫PHP文件更容易使用XML解析器。 – usoban

+0

是的,這是唯一的內容。我會研究一下。謝謝 – Michael

回答

0
<?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); 
+0

謝謝。似乎完美的工作!我可以以某種方式選擇將其添加到哪個部分?如果它會使它成爲一個巨大的麻煩,那麼不用擔心:) – Michael

+0

@Michael編輯:) –

+0

@ OZ_謝謝:) – Michael

相關問題