首页 > 解决方案 > 如何在 PHP 中为 for 循环声明一个对象数组?

问题描述

我想插入一个测验的详细信息,其中在很多字符串(问题、教授、课程等)中,我有一个答案数组(及其相应的 is_correct 数组),所以我想创建一个 for 循环来正确插入每个答案。

问题是我不知道如何正确调用 questionQuiz 对象。我注意到如果我在开始时声明两个不同的对象,然后手动执行此操作:

$questionQuiz1 -> insert_question($quiz_name,$professor,$course,$question,$points,$answer[0],$is_correct[0]);
$questionQuiz2-> insert_question($quiz_name,$professor,$course,$question,$points,$answer[1],$is_correct[1]);

有用。我应该如何将此对象声明为数组并在迭代中使用它?

我尝试过这样的事情,但它不正确。

$questionQuiz[]  = new Test();
    if(isset($_POST['quiz_name'],$_POST['professor'],$_POST['course'],$_POST['question'],$_POST['points'],$_POST['answer'], $_POST['is_correct'])) {
        $quiz_name = $_POST['quiz_name'];
        $professor = $_POST['professor'];
        $course = $_POST['course']; 
        $question = $_POST['question'];
        $points = $_POST['points']; 
        $answer = $_POST['answer'];
        $is_correct = $_POST['is_correct'];


        if(!empty($quiz_name) && !empty($professor)&& !empty($course)&& !empty($question)&& !empty($points)&& !empty($answer) && !empty($is_correct)){


            for($i=0; $i<count($answer); $i++) {
                $questionQuiz[$i] -> insert_question($quiz_name,$professor,$course,$question,$points,$answer[$i],$is_correct[$i]);
            }


        }else{
            echo json_encode("param must not be empty"); 
        }
    }

我应该实例化 $questionQuiz[] = new Test(); 在循环内?我测试了它似乎有效,这样做是否正确?

标签: phpobjectfor-loop

解决方案


所以你的代码中的问题是你只创建了一个Test类的实例(在顶部)。在你的for循环中,你只引用它并调用它的insert_question方法。注意:在这种情况下只$questionQuiz[0]存在,所以在其他情况下什么都不会发生(或者可能会发生错误)。

选项1

如果您只想在类上调用该方法,则可以在循环Test中调用它,如下所示:for

(new Test())->insert_question( ... etc ... );

选项 2

如果要存储创建的类对象,请创建一个新Test对象,对其调用insert_question方法并将对象添加到数组中:

$object = new Test();
$object->insert_question( ... etc ...);
$questionQuiz[] = $object;

推荐阅读