简体   繁体   English

如何在php中合并数组键

[英]How to merge array key in php

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)

array key duplicate like 11 and 10 数组键重复,如11和10

MY Question: How to Create Below output array . 我的问题:如何在输出数组下面创建。

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)

Use this function to get your result. 使用此功能可获得您的结果。 Btw: Just asking for help again and again without investigating by yourself is bad behavior, if someone points you to a function (like array_merge_recursive) you should at least take some time to RTM. 顺便说一句:一次又一次地寻求帮助而不自己调查是不好的行为,如果有人将您指向一个函数(例如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;
}

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

I have tested it with these arrays, which should be the same as you have them. 我已经用这些数组测试了它,它应该与您拥有的相同。

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

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

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