如何根据键结合2个数组

时间:2018-01-19 15:24:10

标签: php arrays

我只有一个加入两个数组的问题。我尝试使用array_marge。但这个属性对我不起作用。

我有这些数组。

$Record1=Array(
    [647242M40642NGG916] => 647242|M40642NGG916|10,
    [647242M40725NG6621] => 647242|M40725NG6621|11,
    [647242M40732NG0287] => 647242|M40732NG0287|11,
    [647242M90830FYIF18] => 647242|M90830FYIF18|10,
    [647242M91221EXDU57] => 647242|M91221EXDU57|11,
    [647242M91304EX8878] => 647242|M91304EX8878|10)

$Record2=Array(
    [647242M40642NGG916] => |96
    [647242M40725NG6621] => |95
    [647242M40732NG0287] => |99
    [647242M90830FYIF18] => |93
    [647242M91221EXDU57] => |99
    [647242M91304EX8878] => |92)

如果我使用属性array_merge,则array2替换第一个数组的值。

我想加入取决于键的值以及我在第一个数组中的值。

我想找到这个结果。

$Record3=Array(
    [647242M40642NGG916] => 647242|M40642NGG916|10|96,
    [647242M40725NG6621] => 647242|M40725NG6621|11|95,
    [647242M40732NG0287] => 647242|M40732NG0287|11|99,
    [647242M90830FYIF18] => 647242|M90830FYIF18|10|93,
    [647242M91221EXDU57] => 647242|M91221EXDU57|11|99,
    [647242M91304EX8878] => 647242|M91304EX8878|10|92)    

你能帮我解决一下这个问题吗?

3 个答案:

答案 0 :(得分:0)

看起来你的两个数组有相同的键,你想要合并每个键的值。然后你需要通过编写自己的代码而不是任何php内置函数来弄脏你的手。

您可以通过以下方式执行此操作:

foreach($Record1 as $key => $value){
    $Record1[$key] .= isset($Record2[$key]) ? $Record2[$key] : '';
}
var_dump($Record1);

答案 1 :(得分:0)

您可以使用array_walk将逻辑应用于数组的每个元素。

array_walk($Record1, function () use (&$Record1, $Record2) {
    $key = key($Record1);
    // Check if the key exists in both arrays
    if (array_key_exists($key, $Record2)) {
        $Record1[$key] = $Record1[$key] . '' . $Record2[$key];
    }
    next($Record1);
});

var_dump($Record1);

<强>结果:

array (size=6)
  '647242M40642NGG916' => string '647242|M40642NGG916|10|96' (length=25)
  '647242M40725NG6621' => string '647242|M40725NG6621|11|95' (length=25)
  '647242M40732NG0287' => string '647242|M40732NG0287|11|99' (length=25)
  '647242M90830FYIF18' => string '647242|M90830FYIF18|10|93' (length=25)
  '647242M91221EXDU57' => string '647242|M91221EXDU57|11|99' (length=25)
  '647242M91304EX8878' => string '647242|M91304EX8878|10|92' (length=25)

答案 2 :(得分:0)

首先,在键的基础上合并数组,然后连接对应于相同键的行

$res = array_merge_recursive($Record1, $Record2);
$res = array_map('join', $res);

demo