PHP对象和foreach循环存在问题,对象未正确存储值
我试图从名为input.csv的文件中获取值,并将其添加到名为$myItem的对象中。正如您所看到的,我正在使用foreach方法来实现这一点。由于某种我不清楚的原因,对象的值被混淆了 当我最初使用setter方法设置$item_number的值时,该值是正确的值-input.csv第一行中的第一个条目。但是,当foreach循环完成时,该值已更改为input.csv第一行中的最后一个条目 对于对象$myItem中的所有实例变量都是如此,它们都将更改为input.csv第一行中的最后一个条目。我不知道为什么 这是我的密码:PHP对象和foreach循环存在问题,对象未正确存储值,php,Php,我试图从名为input.csv的文件中获取值,并将其添加到名为$myItem的对象中。正如您所看到的,我正在使用foreach方法来实现这一点。由于某种我不清楚的原因,对象的值被混淆了 当我最初使用setter方法设置$item_number的值时,该值是正确的值-input.csv第一行中的第一个条目。但是,当foreach循环完成时,该值已更改为input.csv第一行中的最后一个条目 对于对象$myItem中的所有实例变量都是如此,它们都将更改为input.csv第一行中的最后一个条目。我
<?php
class Item
{
private $item_number;
private $name;
private $type;
private $make;
private $model;
private $brand;
private $description;
// Item Number
function SetItemNumber($value)
{
$this->item_number = $value;
}
function GetItemNumber()
{
return $this->item_number;
}
// Name
function SetName($value)
{
$this->item_number = $value;
}
function GetName()
{
return $this->name;
}
// Type
function SetType($value)
{
$this->item_number = $value;
}
function GetType()
{
return $this->type;
}
// Make
function SetMake($value)
{
$this->item_number = $value;
}
function GetMake()
{
return $this->make;
}
// Model
function SetModel($value)
{
$this->item_number = $value;
}
function GetModel()
{
return $this->model;
}
// Brand
function SetDescription($value)
{
$this->item_number = $value;
}
function GetDescription()
{
return $this->description;
}
// Brand
function SetBrand($value)
{
$this->item_number = $value;
}
function GetBrand()
{
return $this->brand;
}
}
$file = fopen("input.csv", "r");
$myItem = new Item;
foreach (fgetcsv($file) as $key => $value) {
switch ($key) {
case 0:
$myItem->SetItemNumber($value);
echo $myItem->GetItemNumber(); // prints first value in first row of input.csv
break;
case 1:
$myItem->SetName($value);
break;
case 2:
$myItem->SetType($value);
break;
case 3:
$myItem->setMake($value);
break;
case 4:
$myItem->setModel($value);
break;
case 5:
$myItem->setBrand($value);
break;
case 6:
$myItem->setDescription($value);
break;
}
}
echo $myItem->GetItemNumber(); // ??? prints last value of first row of input.csv.
// This is the value that you should only get from getDescription().
fclose($file);
?>
提前感谢您的帮助 看看你的setter方法,它们都在做:
$this->item_number = $value;
看看您的setter方法,它们都在做:
$this->item_number = $value;
您只读取文件的第一行。
foreach
循环只在该行中的字段上循环,而不是在所有行上循环。@Barmar我知道这一点,现在我只尝试存储第一行的值。我看不出这段代码中会发生任何情况。你只调用了一次fgetcsv()
。哦,我误解了这个问题。我以为你说你是从最后一行得到值的。你只是在读取文件的第一行。foreach
循环只是在行中的字段上循环,而不是在所有行上循环。@Barmar我知道这一点,现在我只想存储第一行的值,我看不出在这段代码中会发生什么。你只调用了一次fgetcsv()
。哦,我误解了这个问题。我以为你说你从最后一行得到了价值。