将数组1附加到数组2,同时保留数组2的数字键,并将键n到n + x添加到数组1的有效方法?

时间:2011-10-20 23:50:18

标签: php arrays

这有两个问题,但整个问题可能有一个总体答案。我有一个数组,我需要附加到另一个数组。两个阵列都必须具有特定的数字键。我的问题是:

  1. 我需要为要附加的数组保留数字键。
    • array_splice()和array_merge()无法连接数组,因为两个数组中的数字键都将被重置。
  2. 我需要将新添加的元素的键设置为n到n + x,这意味着如果n为100且x为25,则新添加元素的键应为100到125.
  3. 有人能想出一种有效的方法吗?

    修改

    对于任何好奇的人,找到了一种更好的方法来为数组添加正确的键。

    // add correct keys
    $array_segment = array_combine(range($offset, $offset + count($array_segment) - 1), $array_segment);
    // merge arrays while maintaining keys
    $first_array = $first_array + $array_segment;
    

1 个答案:

答案 0 :(得分:1)

我认为这是一个非常简单的解决方案,但是,如果我很清楚你想要什么,它的工作原理很快。在我看来,你可以使用这种方法:

$array1 = array(1 => 'a', 2 => 'b', 3 => 'c');
$array2 = array(4 => 'd', 5 => 'e', 6 => 'f');

foreach($array2 as $key => $value)
   $array1[$key] = $value;

var_dump($array1);

$array1[] = 'g';
$array1[] = 'h';

var_dump($array1);

您可以在此处查看结果:

http://codepad.org/ogD9drpK

另一种避免foreach的方法是执行这条指令:

// avoid the loop
//foreach($array2 as $key => $value)
//   $array1[$key] = $value;
$array1 += $array2;

您可以在此处查看结果:

http://codepad.org/cZxCfRn6