从另一个类调用函数内的函数返回“0”

时间:2013-02-05 12:35:15

标签: php class function

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

5 个答案:

答案 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,因此它始终为零。