2013-05-26 44 views
3

我想使用foreach循環自動將記錄添加到新關聯數組中。我有以下的DOM元素的名稱的數組:PHP - 使用foreach循環自動在關聯數組中添加記錄

$DOM = array('element2','element22','element222','element2222'); 

和一個新的關聯數組:

$NEW = array(
    'element1' => '', 
    'element2' => '', 
    'element3' => array(
     'element33' => array(
      'element333' => '' 
     ) 
    ) 
); 

現在使用foreach循環將一個新的記錄/陣列添加到$新的數組:

foreach($DOM as $name){ 
    //Do something 
} 

預期的結果:

$NEW = array(
    'element1' => '', 
    'element2' => array(
     'element22' => array(
      'element222' => array(
       'element2222' => '' 
      ) 
     ) 
    ), 
    'element3' => array(
     'element33' => array(
      'element333' => '' 
     ) 
    ) 
); 

你可以這樣做嗎?自動化這個過程?

+0

我猜你有一個規則的地方,你不能有一個'element22'無需' element2'? ** - 或 - **你是否期望在'$ DOM'中存在'element22'是否也創建了'element2'? – naththedeveloper

+0

我嘗試將值添加到多維數組。有時候會有一位父母,並且只添加孩子,有時你必須創建整個路徑 – Kuba

回答

0

如果我理解正確的話,$DOM包含的鍵用於創建嵌套陣列,與最深層次的空字符串值。所以,你必須創建這樣的數組:

$new_array = array(); 
$last = &$new_array; 
foreach($DOM as $name){ 
    $last[$name] = array(); 
    $last = &$last[$name]; 
} 
$last = ''; 
unset($last); 

而且隨着$NEW遞歸合併它:

$NEW = array_merge_recursive($NEW, $new_array); 
0

您可以將它們作爲參考修改的foreach循環中的數組:

foreach($array as &$value) 
    $value[] = $DOM 

編輯:

<?php 

$DOM = array('element2','element22','element222','element2222'); 

$NEW = array(
    'element1' => '', 
    'element2' => '', 
    'element3' => array(
     'element33' => array(
      'element333' => '' 
     ) 
    ) 
); 

function insert(&$array, $ins) { 
    $element = array_shift($ins); 

    if($element == null) return; 

    foreach($array as $k => &$v) { 
     if($k === $element) { 
      $v[current($ins)] = ''; 

      insert($v, $ins); 
     } 
    } 
} 

insert($NEW, $DOM); 

var_dump($NEW); 
+0

它不能用作...彈出錯誤 – Kuba

+0

顯示什麼錯誤? – kelunik

+0

如果你可以證明它會如何看待我的情況?我首先與循環中的&$聯繫。 – Kuba

0

可以使用array_push()功能

檢查這個馬貝幫助:

$DOM = array('element2','element22','element222','element2222'); 
$NEW = array('element1' => '', 'element2' => '', 'element3' => array('element33' => array('element333' => ''))); 
array_push($NEW, $DOM); 

print_r($NEW); 

在這裏看到:

php.net/manual/en/function.array-push.php‎

或在這裏:

www.w3schools.com/php/func_array_push.asp

+0

array_push在關聯數組中?這不是一個好的解決方案... – Kuba

相關問題