Объектно-ориентированные PHP-массивы - PullRequest
1 голос
/ 21 октября 2010

Я никогда раньше не пробовал использовать 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 ]

5 голосов
/ 21 октября 2010

Вы не инициализировали свой массив.

$this->article = array();

while ($result = mysql_fetch_array($get_articles)) {
  $this->article[$index] = array();
2 голосов
/ 21 октября 2010

Вы заметите, что использовали $this->article, но не $this->index, если хотите отслеживать длину срока службы объекта, который вам необходимо заменить $index на $this->index

2 голосов
/ 21 октября 2010

Вам, вероятно, следует определить переменную $index перед ее использованием в цикле.Возможно, установите его в поле первичного ключа, которое вы получили из запроса.

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

Вам также нужно инициализировать $article переменную-член.

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

Помните, что вы определяете переменные-членывнутри класса, на который нужно ссылаться через $this->, поэтому вам также не нужно определять private $index = 0; в вашем определении класса.Просто определите это внутри метода.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...