使用 PHP class 函数为同一 class 中的变量提供值的正确语法是什么?
What is the correct syntax for using a PHP class function to supply the value for a variable in the same class?
我正在做一个大学项目,该项目必须使用 CSV 文件来创建 table 的值。它必须有一个 class 并且它必须有特定的 class 变量(其中一个我已经创建用于测试)。只有变量被指定为必须成为 class 的一部分,但我认为将函数打包在 class 中会更好(除非有人有不同意见)。
基本上,我想使用 class 函数为 class 变量创建值。这是我的脚本(请参阅注释以获取解释):
<?php
class productRow {
function make_table_row($i) {
$row = 1;
$tablerows = [];
if (($input = fopen("input.csv", "r")) !== FALSE) {
while (($tabledata = fgetcsv($input, 1000, ",")) !== FALSE) { //cycles through the rows of data creating arrays
if ($row == 1) {
$row++;
continue; //skips the first row because it's a header row I don't want on my input
}
$tablerows[] = $tabledata; //uses the roles to populate a multidimensional array
$row++;
}
fclose($input);
return $tablerows[$i]; //uses the $i argument to return one of the row arrays
}
}
var $itemNumber = this->make_table_row($i)[0]; //Line 118: calls make_table_row function to get the first item from the row returned
}
$pr1 = new productRow;
echo $pr1->make_table_row(1); //calls the function from within the class
?>
我收到此错误:致命错误:常量表达式在 C:\xampp\htdocs\Tylersite\index.php 中的第 118 行
中包含无效操作
我知道 return 有效,因为我用 print_r
测试过它,包括添加一个数组编号,就像我对那个变量值所做的那样,以获得特定的数组值。所以我不能正确调用该函数实例。我尝试了各种方法,包括删除 $this
关键字,因为我不确定我是否需要它,但事实是我真的不知道该怎么做,而且我很难找到正确的文档句法。有人知道怎么办吗?
使用构造函数的示例
class productRow {
var $itemNumber = []; // default value doesn't matter as it will change in __construct
public function __construct($i) {
$this->itemNumber = $this->make_table_row($i)[0];
}
function make_table_row($i) {
$row = 1;
$tablerows = [];
if (($input = fopen("input.csv", "r")) === FALSE) {
// return early - reduces indentation
return;
}
while (($tabledata = fgetcsv($input, 1000, ",")) !== FALSE) { //cycles through the rows of data creating arrays
if ($row == 1) {
$row++;
continue; //skips the first row because it's a header row I don't want on my input
}
$tablerows[] = $tabledata; //uses the roles to populate a multidimensional array
$row++;
}
fclose($input);
return $tablerows[$i]; //uses the $i argument to return one of the row arrays
}
}
$pr1 = new productRow(1);
var_dump($pr1->make_table_row(1));
我正在做一个大学项目,该项目必须使用 CSV 文件来创建 table 的值。它必须有一个 class 并且它必须有特定的 class 变量(其中一个我已经创建用于测试)。只有变量被指定为必须成为 class 的一部分,但我认为将函数打包在 class 中会更好(除非有人有不同意见)。
基本上,我想使用 class 函数为 class 变量创建值。这是我的脚本(请参阅注释以获取解释):
<?php
class productRow {
function make_table_row($i) {
$row = 1;
$tablerows = [];
if (($input = fopen("input.csv", "r")) !== FALSE) {
while (($tabledata = fgetcsv($input, 1000, ",")) !== FALSE) { //cycles through the rows of data creating arrays
if ($row == 1) {
$row++;
continue; //skips the first row because it's a header row I don't want on my input
}
$tablerows[] = $tabledata; //uses the roles to populate a multidimensional array
$row++;
}
fclose($input);
return $tablerows[$i]; //uses the $i argument to return one of the row arrays
}
}
var $itemNumber = this->make_table_row($i)[0]; //Line 118: calls make_table_row function to get the first item from the row returned
}
$pr1 = new productRow;
echo $pr1->make_table_row(1); //calls the function from within the class
?>
我收到此错误:致命错误:常量表达式在 C:\xampp\htdocs\Tylersite\index.php 中的第 118 行
中包含无效操作我知道 return 有效,因为我用 print_r
测试过它,包括添加一个数组编号,就像我对那个变量值所做的那样,以获得特定的数组值。所以我不能正确调用该函数实例。我尝试了各种方法,包括删除 $this
关键字,因为我不确定我是否需要它,但事实是我真的不知道该怎么做,而且我很难找到正确的文档句法。有人知道怎么办吗?
使用构造函数的示例
class productRow {
var $itemNumber = []; // default value doesn't matter as it will change in __construct
public function __construct($i) {
$this->itemNumber = $this->make_table_row($i)[0];
}
function make_table_row($i) {
$row = 1;
$tablerows = [];
if (($input = fopen("input.csv", "r")) === FALSE) {
// return early - reduces indentation
return;
}
while (($tabledata = fgetcsv($input, 1000, ",")) !== FALSE) { //cycles through the rows of data creating arrays
if ($row == 1) {
$row++;
continue; //skips the first row because it's a header row I don't want on my input
}
$tablerows[] = $tabledata; //uses the roles to populate a multidimensional array
$row++;
}
fclose($input);
return $tablerows[$i]; //uses the $i argument to return one of the row arrays
}
}
$pr1 = new productRow(1);
var_dump($pr1->make_table_row(1));