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
)

2つの配列をインデックスとマージするにはどうすればよいですか?これは可能ですか?はいの場合、どのように?

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 に答える