У вас довольно много требований, и, не зная контекста, нетрудно выбрать правильную структуру данных. Из вашего примера я предполагаю, что у вас есть массив со студентами и массив с датами. Размер массивов может меняться, но вам всегда нужно прикреплять массив дат каждому ученику, верно?
Итак, исходя из моего предположения, я думаю, вам не нужно переставлять два массива в один. Вы можете выполнять свои перечисленные задачи с заданной структурой.
Вывод каждого студента с датами в таблице:
<table>
<?php foreach($students as $student) { ?>
<tr>
<td><?php echo $student; ?></td>
<?php foreach($dates as $date) { ?>
<td><?php echo $date; ?></td>
<?php } ?>
</tr>
<?php } ?>
</table>
Вставка в базу данных:
<?php
$insert_dates = "'" . implode("','", $dates) . "'";
foreach($students as $student) {
$qry = "INSERT INTO `students` (`name`, `date1`, `date2`, `date3`)
VALUES ('" . $student . "', " . $insert_dates . ")";
//execute query
}
Обновление:
<?php
$qry = "UPDATE `students`
SET date1='".$dates[0]."', date2='".$dates[1]."', date2='".$dates[2]."'
WHERE name IN ('" . implode("','", $students) . "')";
//execute query
НО этот подход имеет некоторые очевидные недостатки, касающиеся динамических изменений. Поэтому, если вы собираетесь работать с базами данных, вы должны создать ассоциативные массивы с ключами, соответствующими именам столбцов таблицы:
$students=array();
$students[] = array('name' => 'student1');
$students[] = array('name' => 'student2');
$students[] = array('name' => 'student3');
$students[] = array('name' => 'student4');
$dates=array();
$dates[] = array('date1'=>'15/04/20', 'date2'=>'20/05/15', 'date3'=>'18/11/10');
Запрос на динамическое обновление будет выглядеть так:
$set_data = '';
foreach($dates as $key => $value) {
$set_data .= $key . "='".$value."',";
}
$set_data = substr($set_data, 0, -1); //remove last comma
$qry = "UPDATE `students`
SET " . $set_data . "
WHERE name IN ('" . implode("','", $students) . "')";
//execute query
Существует намного больше, чего вы можете достичь, играя со структурами данных (например, применяя и изменяя даты для каждого студента индивидуально, выбирая имя студента в качестве ключа ассоциативного массива, чтобы вы могли получить доступ к каждому студенту по имени, так далее.). Поэтому сначала вы должны выяснить, для чего вам нужны данные, а затем выбрать подходящую структуру на основе этого. Я думаю, вы поняли идею, и я надеюсь, что это поможет!
// UPDATE
Исходя из вашего обновленного вопроса, я думаю, что это может быть хорошим подходом для структуры (хотя я до сих пор не знаю, откуда поступают данные и как / если вы можете заполнить этот массив динамически / программно):
$students = array();
$students[] = array(
'name' => 'student1',
'dates' => array(
'date1' => 'code123kil',
'date2' => 'dadfdre145',
)
);
$students[] = array(
'name' => 'student2',
'dates' => array(
'date1' => 'daytetyeyy',
'date2' => 'dafdfe335',
'date3' => 'code123kil'
)
);
//and so on
Итак, давайте выведем его в сетку :
<table>
<?php foreach($students as $student) { ?>
<tr>
<td>Name: <?php echo $student['name']; ?></td>
<td>Dates: <?php echo implode(', ', $student['dates']); ?></td>
</tr>
<?php } ?>
</table>
Вставить в таблицу :
<?php
foreach($students as $student) {
foreach($student['dates'] as $key => $value) {
$qry = "INSERT INTO `your_table` (`estudiante`, `date`, `values`)
VALUES ('".$student['name']."','".$key."','".$value."')";
//execute query
}
}
Обновление значений даты в таблице для данного учащегося
<?php
//find the given student in the array
$student_to_update = 'student2';
$student_info = null;
foreach($sudents as $student) {
if($student['name'] == $student_to_update) {
$student_info = $student;
break;
}
}
//update the student in database:
if(!is_null($student_info))
foreach($student_info['dates'] as $key => $value) {
$qry = "UPDATE `your_table`
SET `values`='".$value."'
WHERE `estudiante` = '".$student_info['name']."'
AND `date`='".$key."'";
//execute query
}
}
Обновление значений даты в таблице для каждого студента
<?php
foreach($students as $student) {
foreach($student['dates'] as $key => $value) {
$qry = "UPDATE `your_table`
SET `values`='".$value."'
WHERE `estudiante` = '".$student['name']."'
AND `date`='".$key."'";
//execute query
}
}