2010-10-21 60 views
1

我從來沒有嘗試OO PHP之前,所以我決定做一個簡單的CMS來了解更多。我在將值加載到多維數組時遇到問題。面向對象的PHP陣列

class Article { 
    private $index = 0; 
    private $article; 

    public function Article() { 
    $get_articles = mysql_query("SELECT * FROM `articles`"); 
    while ($result = mysql_fetch_array($get_articles)) { 
    echo $result["article"]; 

    $this->article[$index]["Tags"] = $result["tags"]; 
    $this->article[$index]["Categories"] = $result["categories"]; 
    $this->article[$index]["Date"] = $result["date"]; 
    $this->article[$index]["Article"] = $result["article"]; 
    $this->article[$index]["URL"] = $result["url"]; 

    $index++; 
    } 
    } 

    public function getArticle($articleID) { 
    return $this->article[$articleID]["Article"]; 
    } 

    public function getTags($articleNumber) { 

    } 

    public function getCategories($articleNumber) { 

    } 

    public function getDate($articleNumber) { 

    } 
} 

echo $result["article"]輸出獨一無二的物品價格不錯,但顯然不會把它放入數組?

$art = new Article(); 
echo $art->getArticle(0); 

但是,這並不輸出文章。有人會如此善意地指出我的小白錯誤嗎?

+0

哪裏是'$ index'更換$index Article()方法? – matpie 2010-10-21 01:46:52

+0

他使它成爲一個全球性的,它的代碼的第一行 – 2010-10-21 01:50:31

+0

也檢查出ArrayObject。 – mario 2010-10-21 02:08:12

回答

5

您沒有初始化您的數組。

$this->article = array(); 

while ($result = mysql_fetch_array($get_articles)) { 
    $this->article[$index] = array(); 
2

您可能應該在循環中使用它之前定義您的$index變量。也許將其設置爲您從查詢中檢索到的主鍵字段。

<?php 
$index = $result['id']; 
$this->article[$index]['tags'] = ... 

您還需要初始化$article成員變量。

<?php 
class Article { 
    private $article = array(); 

請記住,你定義通過$this->被引用的類中的成員變量,所以你也不需要在你的類定義來定義private $index = 0;。只需在方法內定義它。

2

你會發現你用$this->article但不$this->index如果你想跟蹤的長度爲對象的生活,你需要在規定的$this->index