PHP删除默认数组

PHP删除默认数组,php,arrays,Php,Arrays,我有以下代码: <?php //get tasklist array from POST $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

我有以下代码:

<?php
//get tasklist array from POST
$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';
}

//get action variable from POST
$action = filter_input(INPUT_POST, 'action');

//initialize error messages array
$errors = array();

//process
switch( $action ) {
    case 'Add Task':
        $new_task = filter_input(INPUT_POST, 'newtask');
        if (empty($new_task)) {
            $errors[] = 'The new task cannot be empty.';
        } else {
            // $task_list[] = $new_task;
            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 'Delete All Task' :
        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;
    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':
        $i = 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($i === NULL || $i === FALSE) {
            $errors[] = 'The task cannot be modified.';        
        } else {
            $task_list[$i] = $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.';
        } else if ($task_index == 0) {
            $errors[] = 'You can\'t promote the first task.';
        } else {
            // get the values for the two indexes
            $task_value = $task_list[$task_index];
            $prior_task_value = $task_list[$task_index-1];

            // swap the values
            $task_list[$task_index-1] = $task_value;
            $task_list[$task_index] = $prior_task_value;
            break;
        }
    case 'Sort Tasks':
        sort($task_list);
        break;
}

include('task_list.php');
?>

默认值列表如下所示:

写一章 编辑章节 校对章节

当我尝试使用“全部删除”按钮时,会显示“全部删除”。当我在删除所有内容后使用“添加任务”按钮时,它会再次使用所有这些默认值添加我的新任务


如何使默认列表仅在站点首次加载时显示?我试图删除默认的加载值,但这里有一个循环,使它们不断重新出现。非常感谢您的帮助。

我想我已经解决了您的问题。。。这是一个不寻常的例子,因为我认为它不实用

我一直在问自己,“页面的第一次加载和发生事情后的每一次加载有什么不同”,我得到的答案是$action。如果只在没有“$action”的情况下重新写入数组中的元素,则只在页面的第一次加载时重新写入元素。因此,我将开始的if语句分为两部分,并在上面添加了$action的INPUT_帖子,以便if语句可以进行比较

$task_list = filter_input(INPUT_POST, 'tasklist', 
    FILTER_DEFAULT, FILTER_REQUIRE_ARRAY);
$action = filter_input(INPUT_POST, 'action');
if ($task_list === NULL) {
$task_list = array();
}   
if ($action == NULL) {    
    $task_list[] = 'Write chapter';
    $task_list[] = 'Edit chapter';
    $task_list[] = 'Proofread chapter';
}

如何将$task_list设置为初始值,而不是默认值?您可能需要存储一个cookie才能执行类似的一次性操作。有一种方法可以在没有cookie的情况下执行,但我不确定如何执行。我们的下一个任务可能是学习Cookie,但这一任务我们必须在没有Cookie的情况下完成。localStorage?是否将用户ip(用户代理)保存到数据库?这并不总是准确的,因为你可以欺骗它。这正是我需要的。非常感谢。