1

我正在尝试使用 wikipedia mediawiki api 来获取页面数据。查询网址是:

http://en.wikipedia.org/w/api.php?action=parse&format=json&page=Nirayam_%281991_film%29

返回的属性之一是类别:

"categories":[{"sortkey":"","*":"Telugu-language_films"},{"sortkey":"","*":"1991_films"},{"sortkey":"","*":"Indian_films"}]

json_decode 之后的 var_dump :

foreach($wiki_page_data_json->parse->categories as $cat)
{
    var_dump($cat);
}

给我这个:

object(stdClass)[21] public 'sortkey' => string '' (length=0)
public '*' => string 'Telugu-language_films' (length=21)

object(stdClass)[22] public 'sortkey' => string '' (length=0)
public '*' => string '1991_films' (length=10)

object(stdClass)[23] public 'sortkey' => string '' (length=0)
public '*' => string 'Indian_films' (length=12)

我可以以$cat->sortkey的形式访问 public 'sortkey'

问题是 -如何访问 public '*' 中的值?

4

2 回答 2

3

您可以使用以下表示法访问名称包含特殊字符的对象属性:

foreach($wiki_page_data_json->parse->categories as $cat)
{
    var_dump( $cat->{'*'} );
}

有趣的阅​​读> https://stackoverflow.com/a/10333200/67332

于 2013-08-10T08:58:12.883 回答
2

您可能应该json_decode()只返回数组,而不是数组和对象。

json_decode($jsonstring, true); // last parameter true will return only arrays

然后很容易:

$cat['sortkey'];
$cat['*'];

我真的不喜欢对象具有不可访问的属性名称。

于 2013-08-10T08:59:57.750 回答