2015-04-17 6 views
0

У меня есть объекты в массиве. Я хочу получить доступ к свойствам этих объектов, но мне не повезло.PHP: не удается получить доступ к ключу объекта в массиве

class Article { 
    public $category; 
    public $title; 
    public $img; 
    public $location; 
    public $text; 


    public function __construct($category, $title, $img, $location, $text) { 
     $this->category = $category; 
     $this->title = $title; 
     $this->img = $img; 
     $this->location = "pages/" . $location; 
     $this->text = $text; 
    } 
} 

//db of articles 
$runawayFive = new Article("news", "The Runaway Five Comes to Fourside",  "img/BluesBrothers.jpg", 
"runaway_five_comes_to_fourside.html", 
"The Runway Five continues its nationwide tour, stopping in Fourside to perform at the world famous Topolla Theater. Previously, an unexpected delay caused the group to postpone its shows for over a week. The award-winning group was forced to speed ten days in neighboring town, Threed. Tunnels going to and from Threed were blocked, but no one really knows how or why." . "<br>" 
."The Runaway Five will being playing at the Topolla Theater during Friday and Saturday night. Tickets are $20 per adult." 
); 
$articles = Array($runawayFive); 
echo $articles[0]["title"]; 

Должно быть, заголовок статьи повторяется, но я ничего не получаю. Я могу сделать var_dump($articles[0]) и вернуть объект, но не могу получить доступ к его значениям.

ответ

2

В PHP вы получаете доступ к свойствам объекта с помощью оператора ->.

echo $articles[0]->title; 
0

Вы можете получить доступ к свойству объекта непосредственно, как этот

echo $runawayFive->title; 

Нет необходимости для массива конверсия

0
$articles 

Это массив, этот массив имеет только 1 значение и единственное значение, которое у вас есть в элементе, является объектом типа Article.

array(
    0 => new Article() 
); 

Вы можете ссылаться на каждое значение массива ключом, ключ по умолчанию является числовым индексом, начинающимся с нуля. Таким образом, вы можете получить доступ к массиву по

$articles[ $indexValue ]; 

В этом случае вы можете иметь что-то вроде:

$article = $articles[ 0 ]; 

Для доступа к значению массива в нулевой индекс. Таким образом, в этом случае это объект. Поэтому для доступа к нестационарным методам или экземплярам varialbes объекта вы используете оператор ->. Как следует:

$article->title; 

Короткий синтаксисом является:

$articles[0]["title"]; 

И приятнее одно:

$article = $articles[0]; 
$article->title; 

Для вывода значения просто написать echo перед вызовом переменной экземпляра.

Как:

$article = $articles[0]; 
echo $article->title; 

ИЛИ

echo $articles[0]->title; 
0

Да, вы должны получить доступ к свойствам, как это:

$articles[0]->title; 

Или, если вы действительно хотите получить доступ к свойствам в массиве формат, который вы можете реализовать «ArrayAccess», как показано ниже:

class Article implements ArrayAccess { 

public $title; 

} 

$article = new Article(); 
echo $article['title']; 

Для справки:

http://php.net/manual/en/class.arrayaccess.php http://php.net/manual/en/language.oop5.interfaces.php

Смежные вопросы