如何在php中合并数组键

时间:2016-07-12 06:47:30

标签: php arrays

array (size=1)
  11 => 
    array (size=1)
      'subject' => 
        array (size=1)
          'Maths' => string '21' (length=2)

array (size=1)
  10 => 
    array (size=1)
      'subject' => 
        array (size=1)
          'Maths' => string '10' (length=2)

array (size=1)
  11 => 
    array (size=1)
      'subject' => 
        array (size=1)
          'Gujarati' => string '21' (length=2)

array (size=1)
  10 => 
    array (size=1)
      'subject' => 
        array (size=1)
          'Gujarati' => string '20' (length=2)

数组键重复,如11和10

我的问题: 如何创建下面的输出数组。

array (size=1)
  11 => 
    array (size=1)
      'subject' => 
        array (size=1)
          'Maths' => string '21' (length=2)
         'Gujarati' => string '21' (length=2)

array (size=1)
  10 => 
    array (size=1)
      'subject' => 
        array (size=1)
          'Maths' => string '10' (length=2)
         'Gujarati' => string '20' (length=2)

1 个答案:

答案 0 :(得分:0)

使用此功能获取结果。 顺便说一句:只是一次又一次地请求帮助而不是自己调查是不好的行为,如果有人指向你的函数(比如array_merge_recursive),你至少应该花些时间去RTM。

function array_merge_recursive_new() {

    $arrays = func_get_args();
    $base = array_shift($arrays);

    foreach ($arrays as $array) {
        reset($base); //important
        while (list($key, $value) = @each($array)) {
            if (is_array($value) && @is_array($base[$key])) {
                $base[$key] = array_merge_recursive_new($base[$key], $value);
            } else {
                $base[$key] = $value;
            }
        }
    }

    return $base;
}

来源/版权: http://php.net/manual/en/function.array-merge-recursive.php#106985

我已经使用这些数组进行了测试,这些数组应与您拥有的相同。

$arr1 = array(
    10 => array( "subject" => array("math" => 1)),
    11 => array( "subject" => array("math" => 2)),
);

$arr2 = array(
    10 => array( "subject" => array("guawhatever" => "foo")),
    11 => array( "subject" => array("guawhatever" => "bar")),
);
$blubb = array_merge_recursive_new($arr1,$arr2);