跟踪 2 键数组

Keeping track of 2 key array

我正在尝试实现一个投票系统,如果用户登陆特定的投票页面并实际回答了问题,那么将记录 ID 和他们的选项。例如,假设该问题的 id 是 67,他们回答了选项 2,那么我希望数组看起来像这样:67:2。日志数组数据将保存在 SESSION 变量中,每次用户回答问题时,它都会添加到该数组中。当用户尝试导航到 he/she 已回答的民意调查时,它将显示已回答的选项。

我知道如果这是一个仅包含数字的数组,例如 "3,2,1,5,6",我可以使用连接和 in_array 函数,但我该如何对这种类型的数组执行此操作? ("3:1, 2:2, 1:1") 其中第一个数字是 id,第二个数字是选择的选项。我如何使用 if (in_array($id)) 连接后它会像这样 "3:1"

我会说,你可以这样做:

// Log an answer:
$_SESSION["polls"][$question] = $answer;

这样,它将记录:

{
  "polls": {
    "question-6": "answer-2",
    "question-4": "answer-1"
  }
}

所以不会有重复。要检查用户是否已回答,您可以这样做:

in_array("question-6", array_keys($_SESSION["polls"]))

如果用户回答了问题 6,这会给你。

PHP 脚本

<?php
    header("Content-type: text/plain"); session_start();
    // Log few questions and answers.
    $question = "question-67";
    $answer = "answer-2";
    $_SESSION["polls"][$question] = $answer;
    $question = "question-55";
    $answer = "answer-1";
    $_SESSION["polls"][$question] = $answer;
    $question = "question-42";
    $answer = "answer-3";
    $_SESSION["polls"][$question] = $answer;
    // Let's check if the next question, which will be the same one, has been answered or not.
    $question = "question-67";
    $answer = "answer-2";
    if (in_array($question, array_keys($_SESSION["polls"])))
        echo "Question has been answered.";
    else
        echo "Question not answered.";
?>

我得到的输出为:

Question has been answered.