如何使用php将第二个数组值插入第一个数组
我有第三方供应商提供的多维数组,详细信息如下 $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", ), ) ), ); ) 结果数组:如何使用php将第二个数组值插入第一个数组,php,multidimensional-array,Php,Multidimensional Array,我有第三方供应商提供的多维数组,详细信息如下 $data = array ( "studentData" => array ( array( "university" => array( "name" => "Tes Name", "address" => "Street name", "province" => "Province name",
我希望我的问题是明确的,并得到解决。谢谢您的帮助。这就是您所要求的
$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);