在isset()之后向数组添加值

时间:2012-09-08 21:37:20

标签: php arrays

我正在尝试在后续试验后向阵列添加元素,但到目前为止,只有一个值被添加到数组中。我用谷歌搜索并搜索了stackoverflow,我似乎只获得了一半的图片,除非我执行错误。

大约有40个文件需要一个接一个地提交,然后每个试验的值都存储在数据库中。

到目前为止,这就是我所做的。

$_SESSION['task2'] = array();

//Submit Trial 1
if (isset($_POST['submit_task_01'])) {

$trial1_ac_sec = cleanInput($_POST['clockInputTask_01ac']);
$trial1_est_sec = cleanInput($_POST['clockInputTask_01']);
$trial1_ac = round(($trial1_ac_sec * 42.67), 2);
$trial1_est = round(($trial1_est_sec * 42.67), 2);
$trial1_judgErr = $trial1_ac - $trial1_est;

$trial_1error = round($trial1_judgErr, 2);
array_push($_SESSION['task2'],$trial_1error);
header("location: Trial_2.php");
 }

 //Submit Trial 2
 if (isset($_POST['submit_task_02'])) {

$trial2_ac_sec = cleanInput($_POST['clockInputTask_02ac']);
$trial2_est_sec = cleanInput($_POST['clockInputTask_02']);
$trial2_ac = round(($trial2_ac_sec * 42.67), 2);
$trial2_est = round(($trial2_est_sec * 42.67), 2);
$trial2_judgErr = $trial2_ac - $trial2_est;

$trial_2error = round($trial2_judgErr, 2);
array_push($_SESSION['task2'],$trial_2error);

header("location: newEmptyPHPWebPage.php");
}

... and so on.. up until 40

我只是想知道我做错了什么,我知道每次isset()都会重新加载页面,之前的数据将无法使用,所以从这个意义上来说我认为我会创建一个数组会话然后在会话中推送数据,但这似乎不起作用。

如果有人对我能做什么有任何想法,我将非常感激。谢谢。

3 个答案:

答案 0 :(得分:2)

您在代码顶部输入内容:

$_SESSION['task2'] = array();

您应该使用:

if (!isset($_SESSION['task2'])) {
    $_SESSION['task2'] = array();
}

否则,每次加载页面时都要清理它!

答案 1 :(得分:2)

据我所知,这里的自动化潜力巨大。而不是写40块这个你可以简单地做一个for-Loop并从那里开始。知道将40个值中的哪一个添加到数组中也很有趣(我必须在这里问一下,因为StackOverflow因为某些原因不允许我发表评论。这是我的假设解决方案:

    // If no Session found, start it.
    if (!isset($_SESSION)) {
        session_start();
    }

if(!isset($_SESSION['task2']) {
    $_SESSION['task2'] = array();
}

    // For 40 times
    for ($i = 0; $i < 40; $i++) {

        // If i is smaller then ten, prepend 0
        if ($i < 10) {
            $task = '0' . $i;
        } else {
            $task = $i;
        }

        // if current task is set
        if (isset($_POST['submit_task_' . $task])) {
            $trial_ac_sec = cleanInput($_POST['clockInputTask_' . $task . 'ac']);
            $trial_est_sec = cleanInput($_POST['clockInputTask_' . $task]);
            $trial_ac = round(($trial_ac_sec * 42.67), 2);
            $trial_est = round(($trial_est_sec * 42.67), 2);
            $trial_judgErr = $trial_ac - $trial_est;

            $trial_error = round($trial_judgErr, 2);
            array_push($_SESSION['task2'], $trial_error);

            getCorrectPage($i);
        }
    }

    function getCorrectPage($task) {
        // Look what's in task, go to the case that matches
        switch ($task) {
            case 1 :
                header("location: Trial_2.php");
                break;
            case 2 :
                header("location: newEmptyPHPWebPage.php");
                break;
            case 3 :
                header("location: Trial_3.php");
                break;
            // AND SO FORTH...
            default :
                echo 'No Correct Page for task ' . $task;
                break;
        }

    }

答案 2 :(得分:0)

添? 我想指出的一点是,虽然您的问题已得到解答,但它可能会为您节省大量的复制/粘贴。

代码复制是程序员非常热衷于避免它,似乎你会复制粘贴这40次,虽然我在你的代码示例中看到的两次,它们几乎相同?

我无法完成其余的工作,但只想指出这可以以干净的方式完成。

干杯和gl