как разобрать этот json в php - PullRequest
0 голосов
/ 05 марта 2011

Привет всем, у меня есть файл json, т.е.

{
   "data": [
      {
         "name": "The Lord of the Rings Trilogy (Official Page)",
         "category": "Movie"
      },
      {
         "name": "Snatch",
         "category": "Drama"
      },
      {
         "name": "The Social Network Movie",
         "category": "Movie"
      },
      {
         "name": "Scarface\u2122",
         "category": "Movie"
      }
  ]
}

Я хочу проанализировать этот файл в php и получить значение всех категорий, мой код php

<?php
error_reporting(E_ALL);
ini_set('display_errors', true);
$string = file_get_contents("test.json");
$json_a=json_decode($string,true);
foreach ($json_a as $category_name => $category) {
    echo $category['category'];
}?>

но я получаю эту ошибку

Notice: Undefined index: category in /var/www/json app/test.php on line 7

также, как я могу получить режим (режим - это число, которое повторяется чаще, чем любой другой) категории в этом файле, т.е. в этом примере «Фильм» - это режим списка.

1 Ответ

2 голосов
/ 05 марта 2011
var_dump($json_a);

Сразу после json_decode и вы увидите, что массив вложен в data, поэтому

foreach ($json_a['data'] as $category_name => $category) {
    echo $category['category'];
}

UPD

$string = '{
   "data": [
      {
         "name": "The Lord of the Rings Trilogy (Official Page)",
         "category": "Drama"
      },
      {
         "name": "Snatch",
         "category": "Movie"
      },
      {
         "name": "The Social Network Movie",
         "category": "Movie"
      },
      {
         "name": "Scarface\u2122",
         "category": "Movie"
      }
  ]
}';
$json_a=json_decode($string,true);

$categories = array();
foreach ($json_a['data'] as $category_name => $category) {
    $categories[] = $category['category'];
}

$categories_cnt = array_count_values($categories);
arsort($categories_cnt);

$categories_titles = array_keys($categories_cnt);

$most_frequent_word = reset($categories_titles);

var_dump($most_frequent_word);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...