如何使用php将第二个数组值插入第一个数组

如何使用php将第二个数组值插入第一个数组,php,multidimensional-array,Php,Multidimensional Array,我有第三方供应商提供的多维数组,详细信息如下 $data = array ( "studentData" => array ( array( "university" => array( "name" => "Tes Name", "address" => "Street name", "province" => "Province name",

我有第三方供应商提供的多维数组,详细信息如下

$data = array ( "studentData" => array ( array( "university" => array( "name" => "Tes Name", "address" => "Street name", "province" => "Province name", ), "college" => array( "name" => "IT" ), "examDate" => "2019-01-20", "lesson" => array( "lessonId" => array( "lessonIdNumber" => "40" ) ), "countStudent" => "2", "examResult" => array( array( "studentGender" => "Male", "studentName" => array( array( "name" => "George", "result" => "98" ), array( "name" => "Leonard", "result" => "84" ), ), ) ) ), array( "university" => array( "name" => "Tes Name", "address" => "Street name", "province" => "Province name", ), "college" => array( "name" => "IT" ), "examDate" => "2019-01-20", "lesson" => array( "lessonId" => array( "lessonIdNumber" => "41" ) ), "countStudent" => "1", "examResult" => array( "studentGender" => "Female", "examDate" => "2019-01-20", "lessonId" => array( "lessonIdNumber" => "40" ), "countStudent" => "1", "studentName" => array( array( "name" => "Anita", "result" => "71" ) ), ) ), array( "university" => array( "name" => "Tes Name", "address" => "Street name", "province" => "Province name", ), "college" => array( "name" => "Design Graphics" ), "examDate" => "2019-01-20", "lesson" => array( "lessonId" => array( "lessonIdNumber" => "42" ) ), "countStudent" => "3", "examResult" => array( array( "studentGender" => "Male", "studentName" => array( array( "name" => "Edward", "result" => "83" ), array( "name" => "William", "result" => "86" ), array( "name" => "Oliver", "result" => "77" ), ), ) ) ), array( "university" => array( "name" => "Tes Name", "address" => "Street name", "province" => "Province name", ), "college" => array( "name" => "Design Graphics" ), "examDate" => "2019-01-20", "lesson" => array( "lessonId" => array( "lessonIdNumber" => "42" ) ), "countStudent" => "2", "examResult" => array( array( "studentGender" => "Female", "studentName" => array( array( "name" => "Isabel", "result" => "77" ), array( "name" => "Dorothi", "result" => "86" ) ), ), ) ), ), "lessonData" => array ( array( "lessonId" => array( "lessonIdNumber" => "40" ), "sessionName" => "PHP and Array", "teacherData" => array( "teacherName" => "Teacher Name One", "teacherId" => "229910", ), ), array( "lessonId" => array( "lessonIdNumber" => "41" ), "sessionName" => "Photoshop", "teacherData" => array( "teacherName" => "Teacher Name Two", "teacherId" => "981881", ), ), array( "lessonId" => array( "lessonIdNumber" => "42" ), "sessionName" => "Coreldraw", "teacherData" => array( "teacherName" => "Teacher Name Three", "teacherId" => "327718", ), ) ), ); )

结果数组:


我希望我的问题是明确的,并得到解决。谢谢您的帮助。

这就是您所要求的

$lessonData  = $data['lessonData'];
$studentData = $data['studentData'];

$lessons = array();

foreach ($lessonData as $lessonDat)
{
    $lessons[$lessonDat['lessonId']['lessonIdNumber']] = $lessonDat;
}

foreach ($studentData as $id=>$studentDat) {

    $studentData[$id]['sessionName'] = $lessons[$studentDat['lesson']['lessonId']['lessonIdNumber']]['sessionName'];
    $studentData[$id]['teacherData'] = $lessons[$studentDat['lesson']['lessonId']['lessonIdNumber']]['teacherData'];
}

unset($data['lessonData']);
我当然希望这是为了工作,而不是编码任务。对于新手程序员来说,这是一项非常具有挑战性的任务,但听起来像是一项很棒的学校作业


如果是这样的话,我建议你用这个来检查你的工作,否则我希望它能有所帮助。祝你好运

另一种方法是最初将课程号映射到课程数据。让我们这样试试

$student = $data['studentData'];
$lesson = $data['lessonData'];
$expected = [];

# mapping the lession id to lession data e.g 40=>[sessionName=>'Coreldraw','teacherData'=>[array]]
foreach($lesson as $key=>$value){
    $mapped[$value['lessonId']['lessonIdNumber']] = ['sessionName'=>$value['sessionName'],'teacherData'=>$value['teacherData']];
}

foreach($student as $k=>$v){
    $lesson_id = $v['lesson']['lessonId']['lessonIdNumber'];
    if(array_key_exists($lesson_id, $mapped)){
        $expected['studentData'][$k] = array_merge($student[$k], $mapped[$lesson_id]);
    }
}

print_r($expected);

工作演示:

我为这个问题道歉。谢谢你的帮助。
$student = $data['studentData'];
$lesson = $data['lessonData'];
$expected = [];

# mapping the lession id to lession data e.g 40=>[sessionName=>'Coreldraw','teacherData'=>[array]]
foreach($lesson as $key=>$value){
    $mapped[$value['lessonId']['lessonIdNumber']] = ['sessionName'=>$value['sessionName'],'teacherData'=>$value['teacherData']];
}

foreach($student as $k=>$v){
    $lesson_id = $v['lesson']['lessonId']['lessonIdNumber'];
    if(array_key_exists($lesson_id, $mapped)){
        $expected['studentData'][$k] = array_merge($student[$k], $mapped[$lesson_id]);
    }
}

print_r($expected);