0
<?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"
4

5 回答 5

2

在 php 中,连接运算符是点在这一行中:

$text+= $this->kurv[$i]->getInfo() . "<br/>";

您正在使用您习惯的 java (+=) 以及特定于 php 的那个,点

尝试将该行(以及所有类似的行)更改为

$text .= $this->kurv[$i]->getInfo() . "<br/>";
于 2013-02-05T12:37:48.637 回答
2

+=当您应该使用.=运算符进行字符串连接时,您正在使用运算符。

在 PHP 中,这是两种不同的运算,数学加法和字符串连接。

于 2013-02-05T12:37:56.677 回答
0

您正在使用此运算符:

+=

这仅用于整数。PHP 将尝试将字符串转换为整数(最终为 0)。

相反,您可能需要字符串连接运算符:

.= 
于 2013-02-05T12:38:20.993 回答
0

字符串连接是用 完成的.,而不是+

因此,您想要 do.=而不是+=in VisVarer

于 2013-02-05T12:39:19.857 回答
0

将此行更改为

$text.= $this->kurv[$i]->getInfo() . "<br/>";

PHP 中的连接赋值运算符.=不是+=. 发生的事情是您将结果字符串添加为数字,$text因此它将始终为零。

于 2013-02-05T12:39:38.433 回答