php - 如何在 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(); 在循环内?我测试了它似乎有效,这样做是否正确?
解决方案
所以你的代码中的问题是你只创建了一个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;
推荐阅读
- python - 不知道为什么数据不会从文件呈现到浏览器中
- indoor-positioning-system - HERE 室内定位是否有 REST API
- python - django_migrations 输出 ORA-02000: 缺少 ALWAYS 关键字?
- linux - Terraform - Shell 脚本权限被拒绝错误
- vue.js - 在 vue 中处理多个发射的更好方法
- sql - COLLECT 语句中 ORDER BY 的语法错误
- c++ - 试图理解 C++ 中矩阵乘法的访问运算符
- c# - 多态绑定控制器接受不同的 json 类型
- android - 安卓 | 多个布局限定符会导致哪个操作?
- perl - “在数字 eq (==) 中使用未初始化的值”在 perl 脚本的特定行报告