从数组返回键和值

时间:2012-03-08 23:12:28

标签: php facebook-graph-api

任何人都可以帮我解决这个问题。我正在获取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 ) )

此阵列中的键数因用户而异,因此需要灵活。

1 个答案:

答案 0 :(得分:2)

这样的事情怎么样:

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

它的作用:

  1. 将stdClass对象转换为本机数组。 ((array)运营商)
  2. 将该数组转换为另一个数组,仅包含其键。 (array_keys()功能)
  3. 提取该数组的前十个条目。 (array_slice()功能)
  4. 如果要提取前十个包括它们的值,请跳过array_keys部分并确保在切片时数组的键不会混淆(该函数的第4个参数,请参阅更多信息的文档):

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