2012-03-08 74 views
-1

任何人都可以请帮助我与那一个。我得到Facebook页面粉丝的地区。 Facebook的输出是JSON格式。经过我json_decode($fb_output)我最终以阵列下面。我希望在前10种语言(如果少于10种语言的情况下全部使用)以及密钥中的值(说这种语言的人数)重复列表。到目前为止,我已经尝试过失败与foreach ($fb_output $key => $value)从阵列返回键和值

这里得到它是数组:

Array ( 
[0] => stdClass Object ( 
    [value] => stdClass Object ( 
     [de_DE] => 8527 
     [en_US] => 313 
     [en_GB] => 147 
     [tr_TR] => 106 
     [it_IT] => 79 
     [sr_RS] => 25 
     [hu_HU] => 24 
     [es_ES] => 15 
     [bs_BA] => 12 
     [es_LA] => 12 
     [sk_SK] => 11 
     [ro_RO] => 10 
     [ru_RU] => 9 
     [pt_BR] => 9 
     [nl_NL] => 8 
     [hr_HR] => 8 
     [fr_FR] => 7 
     [sv_SE] => 5 
     [cs_CZ] => 5 
     [bg_BG] => 5 
     ) 
    [end_time] => 2012-03-05T08:00:00+0000)) 

键此数组中的数量从用户到用户的变化,因此会需要灵活。

回答

2

怎么是这样的:

$topTen = array_slice(array_keys((array) $fb_output[0]->value), 0, 10); 

做些什么:

  1. 变换stdClass的对象转换为本地阵列。 ((array)运算符)
  2. 将该数组转换为另一个数组,仅包含其键。 (array_keys()函数)
  3. 提取该数组的前10个条目。 (array_slice()功能)

如果要提取的前十名,包括他们的价值观,跳过array_keys部分,并确保,该数组的键不会被弄混了,而切片它是(第四个参数功能,请参阅文档以获取更多信息):

$topTen = array_slice((array) $fb_output[0]->value, 0, 10, true); 
echo $topTen['en_GB']; // 147 
+0

嗨@Niko,谢谢你 - 非常有帮助和教育。你是否也知道如何获得这些价值?因此,我最终列出了前十种语言和每种语言的价值(有多少人会说这种语言)。 – 2012-03-08 23:21:12

+0

当然,我在我的回答中添加了一段关于此的内容。 – Niko 2012-03-08 23:25:30

+0

辉煌,非常感谢@Niko - 像魅力一样工作。这是输出:Array [(de_DE] => 8527 [en_US] => 313 [en_GB] => 147 [tr_TR] => 106 [it_IT] => 79 [sr_RS] => 25 [hu_HU] => es_ES] => 15 [bs_BA] => 12 [es_LA] => 12) 现在我只是试图在每行上回显,因为我将它提供给条形图。对于像我这样的PHP新手来说,像这样回应一个数组是相当重要的任务;) – 2012-03-08 23:31:54