如何通过检查两个数组的一个元素的键值对将一个数组的内容合并到另一个数组是相同的

时间:2014-01-16 07:13:29

标签: php arrays

我想通过检查php

中两个数组的值来合并两个数组

示例数组就像这样,第一个数组

 Array
(
  [0] => Array
      (
         [studentName] => XYZ
         [studentId] => 690
         [rollNo]    => 36    
      )

  [1] => Array
     (
         [studentName] => ABC
         [studentId] => 729
         [rollNo]    => 37    
     )
)

我的第二个阵列是:

Array
 (
  [0] => Array
    (
        [attendanceCode] => 13
        [studentId] => 690
    )

  [1] => Array
    (
        [attendanceCode] => 14
        [studentId] => 729
    )
)

不,只有当两个数组的[attendanceCode]相同时,我才想将[studentId]键和值添加到第一个数组

我的样品输出应该如下:

 Array
(
  [0] => Array
      (
         [studentName] => XYZ
         [studentId] => 690
         [rollNo]    => 36
         [attendanceCode] => 13
      )

  [1] => Array
     (
         [studentName] => ABC
         [studentId] => 729
         [rollNo]    => 37 
         [attendanceCode] => 14   
     )
)

2 个答案:

答案 0 :(得分:1)

<?php
   $combined_array = array();
   foreach($array1 as $key => $a)
   {
      $combined_array[] = array_merge($array1[$key], $array2[$key]);
   }
?>

或做

$combined_array = array_merge_recursive($array1, $array2);

答案 1 :(得分:0)

尝试以下代码,使用此代码,您无需担心数组的索引

    <?php
$arr1 = array(
            array('studentName'=> 'XYZ',
            'studentId'=> 690 ,
            'rollNo'=> 36,
            ),
            array('studentName'=> 'ABC',
            'studentId'=> 729 ,
            'rollNo'=> 37,
            )
        );

$arr2 = array(
            array('attendanceCode'=> '14',
            'studentId'=> 729 ,
            ),
            array('attendanceCode'=> '13',
            'studentId'=> 690
            )

        );

$combined_array = array();
if(is_array($arr1)){
    foreach($arr1 as $key=>$val){
        if(is_array($arr2)){
            foreach($arr2 as $k1=>$v1){     
                if($v1['studentId'] == $val['studentId']){
                    $combined_array[] = array_merge($val, $v1);
                    break;
                }
            }
        }
    }
}