好吧,我是Stack Overflow的新手,也是PHP的新手,而我只是试图了解PHP类。请记住,我已经习惯了C ++。
我正在尝试做的是创建一个Matrix(2x2)类,这似乎已经完成了。
然后使用这个类创建2个矩阵,这似乎也已完成。
然后将这两个矩阵加在一起,比如a = a + b。
这是我遇到问题的地方,我有一个函数来传递我想要添加的第二个矩阵,而它返回的所有内容都是第一个矩阵的初始值。 (调用函数的人) 这是我所拥有的简化版本:
class Matrix2
{
private $m_m1;
private $m_m2;
private $m_m3;
private $m_m4;
function __construct($a_m1 = 1, $a_m2 = 1, $a_m3 = 1, $a_m4 = 1)
{
$this->m_m1 = $a_m1;
$this->m_m2 = $a_m2;
$this->m_m3 = $a_m3;
$this->m_m4 = $a_m4;
}
public function AddMatrix(Matrix2& $Matrix)
{
$m_m1 + $Matrix2.$m_m1;
$m_m2 + $Matrix2.$m_m2;
$m_m3 + $Matrix2.$m_m3;
$m_m4 + $Matrix2.$m_m4;
return $this;
}
}
当我打电话时:
$MatrixA = new Matrix2();
$MatrixB = new Matrix2(2, 2, 2, 2);
var_dump($MatrixA->AddMatrix($MatrixB));
我知道如何在C ++中实现这一点,我做了很多次,但PHP中的新语法等让我很困惑。 任何帮助表示赞赏:)
答案 0 :(得分:2)
与C ++相比,PHP具有不同的语法。我会试着指出你在混合什么。我不会检查你的代码是否有效,因为我相信,逻辑不是你的问题。
首先,PHP有不同的方法来处理范围。在AddMatrix函数内部,您将为具有函数范围的变量设置值。我假设您要将值设置为类变量。因此,您必须引用当前对象。
public function AddMatrix(Matrix2& $Matrix)
{
$this->m_m1 + $Matrix2.$m_m1;
$this->m_m2 + $Matrix2.$m_m2;
$this->m_m3 + $Matrix2.$m_m3;
$this->m_m4 + $Matrix2.$m_m4;
return $this;
}
注意我正在使用运营商 - >访问类Attribute而不是“。”。这是你的代码中的另一个问题。运营商 ”。”用于连接字符串。要访问我们使用的类属性或函数 - >。那么,看看之后你的功能将如何:
public function AddMatrix(Matrix2& $Matrix)
{
$this->m_m1 + $Matrix2->m_m1;
$this->m_m2 + $Matrix2->m_m2;
$this->m_m3 + $Matrix2->m_m3;
$this->m_m4 + $Matrix2->m_m4;
return $this;
}
是的,我在使用后摆脱了$ character - >。这是对的。我们仅将$用于变量。从未访问过对象属性。
另一个错误...... PHP不使用数据类型的变量。对象已经是引用。所以,&操作员是不必要的所以,让我们完成你的功能:
public function AddMatrix($Matrix2)
{
$this->m_m1 + $Matrix2->m_m1;
$this->m_m2 + $Matrix2->m_m2;
$this->m_m3 + $Matrix2->m_m3;
$this->m_m4 + $Matrix2->m_m4;
return $this;
}