繁体   English   中英

具有索引的array_merge

[英]array_merge with indexes

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

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

具有数字键的数组的键将被array_merge丢弃。 而是使用+运算符代替array_merge

print_r $one + $two;

这将产生:

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

或者,使用字符串键代替数字键。

你有没有尝试过?

$three = $one + $two;

这应该保留密钥

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

$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
)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM