2013-05-10 30 views
2

好吧,我是Stack Overflow的新手,PHP是新手,我只是想讓我的頭腦圍繞PHP類。請記住,我習慣於C++。使用類的PHP矩陣加法

我想要做的是創建一個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中的新語法和這樣的混淆我.. 任何幫助表示讚賞:)

回答

2

PHP有不同的語法與C++相比。我會試着指出你在混合什麼。我不會檢查你的代碼是否工作,因爲我相信,邏輯不是你的問題。

首先,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; 
     } 
+0

謝謝你這麼多@joseareas它現在就像一個魅力!謝謝,我花了很多時間試圖讓這個工作比我真正需要的還多。 – user2368229 2013-05-10 02:06:26

+0

我知道你只需要語法指導。 – 2013-05-10 02:08:35

+0

是的。我理解它背後的邏輯,它只是C++和PHP之間的語法非常相似,但卻非常不同,可能很難說出我需要改變的東西。 – user2368229 2013-05-10 02:18:30