Возвращение ключей и значений из массива - PullRequest
0 голосов
/ 09 марта 2012

Может кто-нибудь, пожалуйста, помогите мне с этим. Я получаю языковые фанаты на 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 Ответ

2 голосов
/ 09 марта 2012

Как насчет этого:

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

Что он делает:

  1. Преобразует объект stdClass в собственный массив. ((array) оператор)
  2. Превращает этот массив в другой массив, содержащий только его ключи. (array_keys() функция)
  3. Извлекает первые десять записей этого массива. (array_slice() функция)

Если вы хотите извлечь первые десять, включая их значения, пропустите часть array_keys и убедитесь, что ключи массива не перепутаны при его разрезании (4-й параметр этой функции см. В документации для получения дополнительной информации):

$topTen = array_slice( (array) $fb_output[0]->value, 0, 10, true);
echo $topTen['en_GB']; // 147
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...