我为一个较大的项目编写一小段内容,该项目将读取CSV文件并将信息存储在一个类中。我将类的每个实例存储在一个数组中。
到目前为止,我尝试做的只是读取CSV的每一行,使用该信息创建一个新的类实例,然后使用我创建的类函数显示信息。
我有两个问题:
首先,在构建构造函数时,我最初尝试使用$this->$property
,但是当我这样做时,每个属性都有未定义的变量错误。我拿出$ this,似乎工作正常。我想知道为什么$this
没有在那里工作?
现在,我每次尝试访问变量以在我班级的displayInfo()
函数中打印出来时,我所遇到的错误是一个未定义的变量错误。我不明白变量是如何定义的,它们是类的属性,它们是使用构造函数初始化的。
这是我的代码:
<?php
class Course {
public $crn;
public $title;
public $instructor;
public $section;
public $location;
public $time;
public $days;
function __construct($arg_crn, $arg_title, $arg_instructor, $arg_section, $arg_location, $arg_time, $arg_days) {
$crn = $arg_crn;
$title = $arg_title;
$instructor = $arg_instructor;
$section = $arg_section;
$location = $arg_location;
$time = $arg_time;
$days = $arg_days;
}
public function displayInfo() {
echo ("\n");
echo $crn;
echo (", ");
echo $title;
echo (", ");
echo $instructor;
echo (", ");
echo $section;
echo (", ");
echo $location;
echo (", ");
echo $time;
echo (", ");
echo $days;
echo ("<br/>");
}
}
?>
<?php
$fileName = "testCSV.txt";
$fp = fopen($fileName, "r");
$index = 0;
// get the next line of the CSV: this contains the headers
$fields = fgetcsv($fp);
// get the next line of the CSV, which contains the first course information
// $fields is an array holding each field of the line (where a field is separated by commas)
$fields = fgetcsv($fp);
while($fields) {
// if at the end of the file, fgetcsv returns false and the while loop will not execute
// the fields in the file are saved into the following indices in fields:
// 0: CRN
// 1: Title
// 2: Instructor
// 3: Section
// 4: Location
// 5: Time
// 6: Days
// add a new course to the array of courses using the information from fields
$Courses[$index] = new Course($fields[0], $fields[1], $fields[2], $fields[3], $fields[4], $fields[5], $fields[6]);
$Courses[$index]->displayInfo();
// get the next line and increment index
$fields = fgetcsv($fp);
$index++;
}
?>
答案 0 :(得分:1)
正如Mark Baker提到的那样,实例变量可以使用$this->crn
进行访问,请遵循相同的&amp;阅读有关PHP中OOPS的一些教程,因为你对这个问题太过新了。
您尝试使用$this->$property
访问媒体资源,$this->property
。
一些教程: