带索引的array_merge

时间:2012-10-31 14:29:17

标签: php arrays

<?php 

$one = array(11 => 'a', 12 => 'b', 13 => 'c');
$two = array(14 => 'd', 15 => 'e');

print_r(array_merge($one, $two));

这回报我:

Array
(
    [0] => a
    [1] => b
    [2] => c
    [3] => d
    [4] => e
)

我想收到:

Array
(
    [11] => a
    [12] => b
    [13] => c
    [14] => d
    [15] => e
)

如何将两个数组与索引合并?这可能吗?如果是,怎么样?

3 个答案:

答案 0 :(得分:5)

使用数字键的数组将array_merge丢弃其键。相反,请使用+运算符代替array_merge

print_r $one + $two;

这会产生:

Array
(
    [11] => a
    [12] => b
    [13] => c
    [14] => d
    [15] => e
)

或者,使用字符串键而不是数字键。

答案 1 :(得分:2)

你试过吗?

$three = $one + $two;

这应保留密钥

答案 2 :(得分:-1)

这是一种可能的解决方案。

$one = array(11 => 'a', 12 => 'b', 13 => 'c');
$two = array(14 => 'd', 15 => 'e');

function array_merge_values()
{
  $args = func_get_args();

  $result = $args[0];
  for ($_ = 1; $_ < count($args); $_++)
    foreach ($args[$_] as $key => $value)
    {
      if (array_key_exists($key,$result))
        $result[$key] += $value;
      else
        $result[$key] = $value;
    }
  return $result;
}

var_dump(array_merge_values($one,$two));

输出

array (size=5)
  11 => string 'a' (length=1)
  12 => string 'b' (length=1)
  13 => string 'c' (length=1)
  14 => string 'd' (length=1)
  15 => string 'e' (length=1)

使用print_r

Array
(
 [11] => a
 [12] => b
 [13] => c
 [14] => d
 [15] => e
)