2010-04-27 138 views
2

好吧,我有這樣一個數組,但它不能保證在所有的時間這個順序進行佈局......需要在特定鍵值添加一個陣列到另一個陣列

$array = array(
    'sadness' => array(
     'info' => 'some info', 
     'info2' => 'more info', 
     'value' => 'value', 
    ), 
    'happiness' => array(
     'info' => 'some info', 
     'info2' => 'more info', 
     'value' => 'the value', 
    ), 
    'peace' => array(
     'info' => 'some info', 
     'info2' => 'more info', 
     'value' => 'the value', 
    ) 
); 

好的,我想在幸福鍵被定義之後立即拋出這個數組。我不能使用「和平」的鑰匙,因爲它必須在幸福之後直接走下去,並且幸福之後的和平可能不會在這個陣列發生變化之後出現。

因此,這裏是我所需要的幸福之後添加...

$another_array['love'] = array(
    'info' => 'some info', 
    'info2' => 'more info', 
    'value' => 'the value of love' 
); 

所以它得到幸福後直接輸入應該是這樣的後的最終輸出:

$array = array(
    'sadness' => array(
     'info' => 'some info', 
     'info2' => 'more info', 
     'value' => 'value', 
    ), 
    'happiness' => array(
     'info' => 'some info', 
     'info2' => 'more info', 
     'value' => 'the value', 
    ), 
    'love' => array(
     'info' => 'some info', 
     'info2' => 'more info', 
     'value' => 'the value of love', 
    ), 
    'peace' => array(
     'info' => 'some info', 
     'info2' => 'more info', 
     'value' => 'the value', 
    ) 
); 

可有人請給我與這一手。使用array_shift,array_pop或array_merge根本沒有幫助我,因爲它們在數組的開頭和結尾。我需要將它直接放在$ array內的KEY位置之後。

謝謝:)

回答

2

你想有兩個相同的鍵'love'的數組。這不可能。

編輯:

你可以這樣做:

$new_array = array(); 
foreach($array as $k => $v) { 
     $new_array[$k] = $v; 
     if($k == 'happiness') { 
       $new_array['love'] = $another_array['love']; 
     } 
} 

working example

+0

我剛注意到了這一點並修復了它。謝謝你,但問題依然存在。 – SoLoGHoST 2010-04-27 10:28:15

+0

非常感謝你,謝謝你的出色例子:) – SoLoGHoST 2010-04-27 10:40:27

0

在我看來,你不明白,在PHP中所有的數組是哈希(關聯數組)。所以訂單不會受到影響。如果您需要有一個特定的順序,你需要使用排序等來定義一個特定的順序,或使用一個簡單的數組

$order = array ('love', 'happiness', 'pease'); 

使用$順序排列訪問$陣列。在$ order數組中,鍵是1,2,3 ......

+0

等等,你說你不能使用foreach將$ another_array追加到$數組中?我的意思是,你不可能以某種方式使用key()函數,並且current()和next()函數可以用於? – SoLoGHoST 2010-04-27 10:33:13

+0

甚至建立一個完全不同的數組,並將$ array設置爲其他構建的數組? – SoLoGHoST 2010-04-27 10:34:10

+0

所以這些都不可能? – SoLoGHoST 2010-04-27 10:34:29

相關問題