合并两个数组,用第二个数组覆盖第一个数组

Pie*_*ier 5 php regex arrays php4

我想合并两个包含文件列表及其括号中的修订的数组。

例如:

拳阵:

0 => A[1], 1 => B[2], 2 => C[2], 3 => D[2]
Run Code Online (Sandbox Code Playgroud)

第二个,

0 => B[3], 1 => C[4], 2 => E[4], 3 => F[2], 4 => G[2]
Run Code Online (Sandbox Code Playgroud)

就像我说的那样,我可以合并两个数组,但会用第二个数组中存在的数据覆盖第一个数组。

我使用这个正则表达式只获取文件名(删除修订号)。我不知道我在这一点上是否正确):

/\[[^\)]+\]/
Run Code Online (Sandbox Code Playgroud)

我正在寻找的结果是这样的,

0 => A[1], 1 => B[3], 2 => C[4], 3 => D[2], 4 => E[4], 5 => F[2], 6 => G[2]
Run Code Online (Sandbox Code Playgroud)

另外,我快要忘记了,整个过程都在 PHP 中。

Yos*_*shi 4

就像是:

function helper() {
  $result = array();

  foreach (func_get_args() as $fileList) {
    foreach ($fileList as $fileName) {
      list($file, $revision) = explode('[', $fileName, 2);
      $revision = trim($revision, ']');
      $result[$file] = !isset($result[$file]) ? $revision : max($result[$file], $revision);
    }
  }

  foreach ($result as $file => $revision) {
    $result[$file] = sprintf('%s[%s]', $file, $revision);
  }

  return array_values($result);
}

$a = array('A[1]', 'B[2]', 'C[2]', 'D[2]');
$b = array('B[3]', 'C[4]', 'E[4]', 'F[2]', 'G[2]');

print_r(helper($a, $b));
Run Code Online (Sandbox Code Playgroud)

演示: http: //codepad.org/wUMMjGXC