0
<?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
)

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

4

3 回答 3

6

带有数字键的数组的键将被 丢弃array_merge。相反,使用+运算符而不是array_merge

print_r $one + $two;

这会产生:

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

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

于 2012-10-31T14:32:17.930 回答
3

你有没有尝试过?

$three = $one + $two;

这应该保留密钥

于 2012-10-31T14:33:17.610 回答
-2

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

$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
)
于 2012-10-31T14:33:37.070 回答