面向对象的PHP数组

面向对象的PHP数组,php,arrays,oop,Php,Arrays,Oop,我以前从未尝试过OO PHP,所以我决定制作一个简单的CMS来了解更多信息。我在将值加载到多维数组中时遇到问题 class Article { private $index = 0; private $article; public function Article() { $get_articles = mysql_query("SELECT * FROM `articles`"); while ($result = mysql_fetch_array($get_ar

我以前从未尝试过OO PHP,所以我决定制作一个简单的CMS来了解更多信息。我在将值加载到多维数组中时遇到问题

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”]
输出唯一的article值,但显然没有将其放入数组中

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

但是,这不会输出文章。有人能指出我的noob错误吗?

您没有初始化数组

$this->article = array();

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

您没有初始化数组

$this->article = array();

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

在循环中使用
$index
变量之前,您可能应该先定义它。可以将其设置为从查询中检索到的主键字段

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

请记住,您在类中定义了要通过
$this->
引用的成员变量,因此也不需要定义
private$index=0在类定义中。只需在方法中定义它。

在循环中使用它之前,您可能应该先定义
$index
变量。可以将其设置为从查询中检索到的主键字段

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

请记住,您在类中定义了要通过
$this->
引用的成员变量,因此也不需要定义
private$index=0在类定义中。只需在方法中定义它。

你会注意到你使用了
$this->article
而不是
$this->index
,如果你想跟踪对象的寿命长度,你需要用
$this->index

替换
$index

你会注意到你使用了
$this->article
,但没有
$this->index
如果你想跟踪对象的寿命长度,你需要将
$index
替换为
$this->index

Article()
方法中定义的
$index
在哪里?他将其作为一个全局变量,它位于他的代码的第一行(旁注)我们鼓励您使用功能更丰富的
mysqli
(i表示改进)扩展,而不是
mysql
扩展。使用构造函数的类名而不是
\u construct
也是PHP4语法,并且(从PHP5.3.3开始)在使用名称空间时将不再工作。在
Article()
方法中定义的
$index
在哪里?他将其设置为全局,它位于代码的第一行(旁注)我们鼓励您使用功能更丰富的
mysqli
(i表示改进)扩展,而不是
mysql
扩展。使用构造函数的类名而不是
\u construct
也是PHP4语法,并且(从PHP5.3.3开始)在使用名称空间时不再起作用。