Я никогда не пробовал 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);
Однако это не выводит статью. Кто-то так любезно указал бы на мою ошибку?
Вы не инициализировали свой массив.
$this->article = array(); while ($result = mysql_fetch_array($get_articles)) { $this->article[$index] = array();
Вероятно, вы должны определить переменную $index
перед ее использованием в цикле. Возможно, установите его в поле первичного ключа, которое вы извлекли из своего запроса.
<?php $index = $result['id']; $this->article[$index]['tags'] = ...
Вам также необходимо инициализировать переменную члена $article
.
<?php class Article { private $article = array();
Помните, что вы определяете переменные-члены в классе, на который нужно ссылаться через $this->
поэтому вам также не нужно определять private $index = 0;
в определении вашего класса. Просто определите его внутри метода.
Вы заметите, что вы использовали $this->article
но не $this->index
если хотите отслеживать длину для жизни объекта, который вам нужен, чтобы заменить $index
$this->index