使用类的 PHP 矩阵加法

标签 php oop class matrix addition

好吧,我是 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/

相关文章:

python - Tkinter 可调整大小的对象 Python Canvas

php - 显示赞助商服务器不同的颜色不显示 php

php - 选择....用于更新和 if 语句与 php

javascript - 在 Javascript 中运行代码以使 PHP 和 HTML 文件从 ONLOAD 事件运行

java - Java中的强封装和弱封装

c# - 在另一个对象中实例化一个对象? (C#)

JAVA-两个对象之间的关系

oop - 我是否正确理解了类(class)是什么?

php - MySQL UNION 查询分离

java - 如何比较 Java 中属性中也包含列表的两个对象