<?php
class Kunde
{
public $knr;
public $navn;
public $adr;
public $tlfnr;
public $kurv = array();
function __construct($nr,$n,$a)
{
$this->knr = $nr;
$this->navn = $n;
$this->adr = $a;
}
function LeggTilVare($vnavn,$vantall,$vpris)
{
$this->kurv[]=new Vare($vnavn,$vantall,$vpris);
}
function VisVarer()
{
for($i=0; $i < count($this->kurv); $i++)
{
$text+= $this->kurv[$i]->getInfo() . "<br/>";
}
return $text;
}
class Vare
{
public $varenavn;
public $antall;
public $pris;
function __construct($navn,$antall,$pris)
{
$this->varenavn=$navn;
$this->antall=$antall;
$this->pris=$pris;
}
function getInfo()
{
return $this->varenavn.", ".$this->antall." st, ".$this->pris.",-";
}
}
$kunde1 = new Kunde(1,"Andreas","Gronland");
$kunde1->LeggTilVare("Kjekks", 10, 10.00);
我习惯用Java编程,但现在正在学习PHP。
我的函数VisVarer()
将只返回"0"
而不会返回任何其他内容。我想这与来自另一个类的另一个函数中的getInfo()
调用有关,或者与我的for循环有些错误。
也许这是编程这样的错误方法?
echo $kunde1->kurv[0]->getInfo(); // returns "Kjekks, 10 st, 10"
echo $kunde1->VisVarer(); // returns "0"
答案 0 :(得分:2)
在php中,连接运算符是点 在这一行:
$text+= $this->kurv[$i]->getInfo() . "<br/>";
你正在使用你习惯的java(+ =)以及php特定的那个,点
尝试将该行(以及所有类似行)更改为
$text .= $this->kurv[$i]->getInfo() . "<br/>";
答案 1 :(得分:2)
当您使用+=
运算符进行字符串连接时,您正在使用.=
运算符。
在PHP中,这是两个不同的操作,数学加法和字符串连接。
答案 2 :(得分:0)
您正在使用此运算符:
+=
那只用于整数。 PHP将尝试将字符串转换为整数(最终为0)。
相反,您可能需要字符串连接运算符:
.=
答案 3 :(得分:0)
字符串连接使用.
完成,而不是+
。
因此,您希望在.=
中执行+=
而不是VisVarer
。
答案 4 :(得分:0)
将此行更改为
$text.= $this->kurv[$i]->getInfo() . "<br/>";
PHP中的连接赋值运算符是.=
而不是+=
。发生的事情是您将结果字符串作为数字添加到$text
,因此它始终为零。