2012-06-13 24 views
1

(在PHP中)這是我的問題,我想在我的類中初始化一個數組,然後使用構造函數填充它,然後我可以在其他數組中使用該數組的變量函數..當我在構造函數中迴應我的數組時,它完美地工作,但是當我嘗試在另一個函數中回顯它時,它給了我非常不同的東西。試圖從一個類中的多個函數調用一個數組

class myProblem 
{ 
    public $phaseArray; 

    function myProblem() 
    { 
     $count1 = 0; 
     $metaFile = fopen('MyFile.txt', 'r') or exit("Unable to open file!"); 
     while(!feof($metaFile)) 
     { 
      $this->phaseArray[0][$count1] = 0; 
      $this->phaseArray[1][$count1] = fgets($metaFile); 
      echo $this->phaseArray[1][$count1], $count1, '</br>'; //this part displays well 
      $count1++; 
     } 
     close($metaFile); 
    } 

    function displayError() 
    { 
     foreach($this->phaseArray as $key => $value) 
     { 
      echo $key, $value, '</br>'; //this part does not show up correctly 
     } 
     echo $this->phaseArray[0][2]; //this part does not show up correctly 
     echo $this->phaseArray[1][1]; //this part does not show up correctly 
    } 
} 

對於縮進,我不能得到它的工作。 正確的打印輸出是(來自構造函數); 0Apple 1Orange 3Pear 4Strawberry

但第二功能顯示; 0Array 1Array

0Array 0Array

什麼我做錯了什麼想法?感謝您的時間!

+1

注意:您應該使用__construct()作爲構造函數類的名稱。類名稱風格與PHP5一樣被棄用。 –

+0

你可以發佈你如何調用函數。 –

+0

謝謝Alex,我不知道。我會解決這個問題。 –

回答

1

其改正它的顯示方式,你可以,如果它的錯誤,你如何填寫,或決定你是如何讀取數據出來的

要創建一個使用2名維數組,其中第二維也是一個數組。所以,當您通過其他的foreach要輸出的第二個維度的所有項目,循環播放:

foreach($this->phaseArray as $key => $values) { 
    foreach($values as $value) { 
    echo $key, $value, '</br>'; //this part show up correctly 
    } 
} 

如果你想知道數組是如何構成的,你可以很容易地與此打印出來:

echo "<pre>"; 
var_dump($aVar); 
echo "</pre>"; 
+0

謝謝,這似乎工作,爲什麼雖然不 echo $ this-> phaseArray [0] [2]; echo $ this-> phaseArray [1] [1]; –

+0

也是,爲什麼它在構造函數中工作正常,但不在其他函數中工作?這讓我感到困惑。 –

+0

試試我已經添加到我的答案的例子,也許你可以找到錯誤:) – Nurickan