代码之家  ›  专栏  ›  技术社区  ›  Glenn Nelson

面向对象的PHP数组

  •  1
  • Glenn Nelson  · 技术社区  · 14 年前

    我以前从未尝试过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"] 只输出一个项目的值很好,但显然没有将其放入数组中?

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

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

    3 回复  |  直到 14 年前
        1
  •  5
  •   Sam Dufel    14 年前

    您没有初始化数组。

    $this->article = array();
    
    while ($result = mysql_fetch_array($get_articles)) {
      $this->article[$index] = array();
    
        2
  •  1
  •   matpie    14 年前

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

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

    您还需要初始化 $article 成员变量。

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

    $this-> 所以你也不需要定义 private $index = 0; 在你的类定义中。只需在方法中定义它。

        3
  •  1
  •   tobyodavies    14 年前

    你会注意到你用了 $this->article $this->index 如果你想知道物体寿命的长短,你需要更换 $index 具有 $this->索引