2010-10-21 66 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