我正在处理涉及PHP数组的任务。这里没有使用数据库,因此任何存储的信息都只存储在名为$ task_list的数组中。程序首次加载时,三个项目将添加到任务列表数组中,并在index.php文件中包含以下代码:
$task_list = filter_input(INPUT_POST, 'tasklist',
FILTER_DEFAULT, FILTER_REQUIRE_ARRAY);
if ($task_list === NULL) {
$task_list = array();
$task_list[] = 'Write chapter';
$task_list[] = 'Edit chapter';
$task_list[] = 'Proofread chapter';
}
我在不同的文件上有一个HTML表单,这是用户实际与之交互的文件。表单上的操作将传递到我的index.php文件,我在其中设置了一个开关设置来处理每个操作。
switch( $action ) {
case 'Add Task':
$new_task = filter_input(INPUT_POST, 'newtask');
if (empty($new_task)) {
$errors[] = 'The new task cannot be empty.';
} else {
array_push($task_list, $new_task);
}
break;
case 'Delete Task':
$task_index = filter_input(INPUT_POST, 'taskid', FILTER_VALIDATE_INT);
if ($task_index === NULL || $task_index === FALSE) {
$errors[] = 'The task cannot be deleted.';
} else {
unset($task_list[$task_index]);
$task_list = array_values($task_list);
}
break;
case 'Modify Task':
$task_index = filter_input(INPUT_POST, 'taskid', FILTER_VALIDATE_INT);
if ($task_index === NULL || $task_index === FALSE) {
$errors[] = 'The task cannot be modified.';
} else {
$task_to_modify = $task_list[$task_index];
}
break;
case 'Save Changes':
$value = filter_input(INPUT_POST, 'modifiedtaskid', FILTER_VALIDATE_INT);
$modified_task = filter_input(INPUT_POST, 'modifiedtask');
if (empty($modified_task)) {
$errors[] = 'The modified task cannot be empty.';
} else if ($value === NULL || $value === FALSE) {
$errors[] = 'The task cannot be modified.';
} else {
$task_list[$value] = $modified_task;
$modified_task = '';
}
break;
case 'Cancel Changes':
$modified_task = '';
break;
case 'Promote Task':
$task_index = filter_input(INPUT_POST, 'taskid', FILTER_VALIDATE_INT);
if ($task_index === NULL || $task_index === FALSE) {
$errors[] = 'The task cannot be promoted.';
} elseif ($task_index == 0) {
$errors[] = 'You cannot promote the first task.';
} else {
$task_value = $task_list[$task_index];
$prior_task_value = $task_list[$task_index - 1];
$task_list[$task_index - 1] = $task_value;
$task_list[$task_index] = $prior_task_value;
break;
}
case 'Sort Tasks':
sort($task_list);
break;
case 'Delete All Tasks':
if (empty($task_list)) {
$errors[] = 'The list is already empty.';
} else {
foreach ($task_list as $key => $value) {
unset($task_list[$key]);
}
$task_list = array_values($task_list);
}
break;
}
include('task_list.php');
我大部分时间都已完成,但我遇到的问题是我仍然需要修改代码以便完成三个任务:"编写章节","编辑章节"和"校对章"应用程序首次加载时,仅添加到数组中。我遇到的问题是,当我删除列表中的所有任务然后添加新任务时,原始的三个任务再次出现,即使它们之前已被删除。我在这里做错了什么?
编辑:如果需要我的完整代码,我在这里粘贴了index.php:
这里有task_list.php: