2014-02-11 113 views
2

如何合併兩個不同的多維數組,但將鍵和值從第一個數組複製到第二個數組?合併或連接兩個多維數組並複製鍵/值

我是如何讓它工作的;第一個數組設置輸入字段,然後可以克隆(使用jQuery進行克隆,就像這樣:http://jsfiddle.net/8M98y/)。一旦保存了現場數據,第二個數組就是結果輸出。問題是,第二個數組缺少來自第一個數組的特定鍵和值,需要正確輸出保存的數據。

有沒有辦法在第一個數組中的鍵和值複製到第二個數組時將數組連接或合併?

第一個數組,我需要的鍵/值從長相複製這樣的:

Array 
(
    [group-1] => Array 
     (
      [fields] => Array 
       (
        [text-field-1] => Array 
         (
          [name] => Text Field 1 
          [value] => Value 1 
          [comments] => true 
         ) 

        [text-field-2] => Array 
         (
          [name] => Text Field 2 
          [value] => Value 2 
          [comments] => false 
         ) 

       ) 

     ) 

) 

第二個數組是這樣的:

Array 
(
    [group-1] => Array 
     (
      [fields] => Array 
       (
        [text-field-1] => New value here 
        [text-field-2] => New value also 
       ) 

     ) 

    [group-2] => Array 
     (
      [fields] => Array 
       (
        [text-field-1] => Cloned group with new value 
        [text-field-2] => Cloned group with new value also 
       ) 

     ) 

) 

因此,如果這兩個數組能被合併,將需要合併陣列的輸出看起來像這樣:http://pastebin.com/uzuZs73B

我試過只用array_merge($array2, $array1),但結果輸出看起來像th是:http://pastebin.com/DucKGMN3他們實際上合併,但鍵和值不復制。

編輯:應該在這裏描述一個用例。

那麼這是如何工作的,初始未保存的輸出是由第一個數組創建的組中的兩個文本輸入。該組是可克隆的,使用jQuery克隆(此處爲示例:http://jsfiddle.net/8M98y/)。因此,如果您添加/克隆多個組中的一個並保存,則生成的保存數據將成爲第二個數組。第二個數組中的字符串是實際保存的輸入值。這些會在第一個數組中進入[value]。

但是,字段的輸出仍然基於第一個數組,這意味着它無法正確輸出克隆的組,因爲它們不是數組,並且沒有與第一個數組相同的鍵和值。

enter image description here

如果任何人都可以提供這方面的一些見解,這將是巨大的,並十分讚賞。

+0

什麼是第二個數組中的字符串的含義是什麼?它們是否對應於第一個數組中的某個特定鍵? – baldrs

+0

這些字符串是輸入的保存值。我應該把這個。對於那個很抱歉。 –

回答

1

對不起,如果我誤解了這個問題,但正在合併一個要求?如果你有權訪問這兩個數組,你可以遍歷第二個數組,映射原始鍵值,並隨着新值重寫。

你的陣列:

$arr1 = Array 
(
    'group-1' => Array 
     (
      'fields' => Array 
       (
        'text-field-1' => Array 
         (
          'name' => 'Text Field 1', 
          'value' => 'Value 1', 
          'comments' => 'true' 
         ), 

        'text-field-2' => Array 
         (
          'name' => 'Text Field 2', 
          'value' => 'Value 2', 
          'comments' => 'false' 
         ) 

       ) 

     ) 

); 


$arr2 = Array 
(
    'group-1' => Array 
     (
      'fields' => Array 
       (
        'text-field-1' => 'New value here', 
        'text-field-2' => 'New value also' 
       ) 

     ), 

    'group-2' => Array 
     (
      'fields' => Array 
       (
        'text-field-1' => 'Cloned group with new value', 
        'text-field-2' => 'Cloned group with new value also' 
       ) 

     ) 

); 

祕密武器:

foreach($arr2 as $k=>$v){ 
    // Get the new values for this iteration 
    $val1 = $arr2[$k]['fields']['text-field-1']; 
    $val2 = $arr2[$k]['fields']['text-field-2']; 
    // Duplicate the original array 
    $arr2[$k]['fields'] = $arr1['group-1']['fields']; 
    // Insert the new values 
    $arr2[$k]['fields']['text-field-1']['value'] = $val1; 
    $arr2[$k]['fields']['text-field-2']['value'] = $val2; 
} 


echo '<pre>'; 
print_r($arr2); 
echo '</pre>'; 

exit(); 

將返回:

Array 
(
    [group-1] => Array 
     (
      [fields] => Array 
       (
        [text-field-1] => Array 
         (
          [name] => Text Field 1 
          [value] => New value here 
          [comments] => true 
         ) 

        [text-field-2] => Array 
         (
          [name] => Text Field 2 
          [value] => New value also 
          [comments] => false 
         ) 

       ) 

     ) 

    [group-2] => Array 
     (
      [fields] => Array 
       (
        [text-field-1] => Array 
         (
          [name] => Text Field 1 
          [value] => Cloned group with new value 
          [comments] => true 
         ) 

        [text-field-2] => Array 
         (
          [name] => Text Field 2 
          [value] => Cloned group with new value also 
          [comments] => false 
         ) 

       ) 

     ) 

)