2010-04-27 108 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

相关问题