好吧,我是 Stack Overflow 的新手,也是 PHP 的新手,我只是想了解 PHP 类。请记住,我已经习惯了 C++。
我想做的是创建一个 Matrix (2x2) 类,这似乎已经完成。
然后使用这个类创建2个矩阵,这似乎也完成了。
然后将这 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 中的新语法等让我感到困惑。 如有任何帮助,我们将不胜感激:)
最佳答案
与 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;
}
注意我使用运算符 -> 来访问类属性而不是“.”。这是您的代码中的另一个问题。运营商 ”。”用于连接字符串。要访问类属性或函数,我们使用 ->。因此,请检查一下之后您的功能将如何:
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;
}
是的,我在使用->后去掉了$字符。这是对的。我们仅将 $ 用于变量。访问对象属性时切勿这样做。
另一个错误...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;
}
关于使用类的 PHP 矩阵加法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16473390/