Счетчик PHP числа элементов, возвращаемых в запросе JSON? - PullRequest
2 голосов
/ 07 мая 2011

Я ищу способ подсчета количества элементов (в PHP), возвращаемых в этих строках JSON, которые я получаю при поиске в базе данных.

Прости меня, потому что я совершенно чушь во всем этом.

Мне сказали, потому что в версии JSON не возвращено число, как в XML из этой базы данных, и мне нужно было бы использовать цикл для подсчета количества результатов?

Я осмотрелся вокруг, но, кажется, ничто не соответствует тому, что я хочу сделать ...

Ниже приведен пример строк, которые я получаю:

Array ( 
  [0] => stdClass Object ( 
    [score] => 12
    [popularity] => 3
    [name] => Samantha Dark
    [id] => 151019
    [biography] => [url] => http://www.themoviedb.org/person/151019
    [profile] => Array ( )
    [version] => 16
    [last_modified_at] => 2011-04-11 17:17:33
  )

  [1] => stdClass Object (
    [score] => 11
    [popularity] => 3
    [name] => Johnny Dark
    [id] => 158737
    [biography] => [url] => http://www.themoviedb.org/person/158737
    [profile] => Array ( )
    [version] => 14
    [last_modified_at] => 2011-04-11 17:18:38
  )
)

и, если применимо, вот php, который я использую для запроса и расшифровки

$name = $_GET['search'];
$persons_result = $tmdb->searchPerson($name);
$persons = json_decode($persons_result);

foreach ($persons as $person) {
  echo '<a href="tmdb_person.php?id='.$person->id.'">'.$person->name.'</a></br>';
}

Ответы [ 3 ]

7 голосов
/ 07 мая 2011

Используйте функцию count на $persons, чтобы получить количество элементов.

4 голосов
/ 07 мая 2011

Это должно сработать.

$iCount = count($persons)

Когда вы вызываете json_decode, вы получаете переменную PHP, которая содержит массив элементов и значений.

В настоящее время вы получаете то, что называется stdClass, но если вы добавите параметр true в вашу функцию json_decode, вы получите обычный массив. Несмотря на то, что вы используете параметр true или нет, вы все равно можете вызвать count:)

$name = $_GET['search'];
$persons_result = $tmdb->searchPerson($name);
$persons = json_decode($persons_result, true);
print_r($persons);

Вот, пожалуйста:)

0 голосов
/ 16 сентября 2015

Если вы выполните запрос, идентичный приведенному ниже, он вернет элемент и посчитает уникальные элементы

$query = " SELECT table_column_here ,COUNT(*) FROM table_name GROUP BY table_column_here;  ";

, которые будут возвращать [{"column_name": "column_data_result", "count": "1"}] через json.

Вы можете использовать приведенный ниже код, и он отобразит результат json обратно.Конечно, вам нужно будет подключиться к SQL, чтобы использовать его ниже.

$query = " SELECT table_column_here ,COUNT(*) FROM table_name GROUP BY table_column_here;  ";

        $result = mysql_query( $query );
            if ( !$result ) {
                $ErrorMessage  = 'Invalid query: ' . mysql_error() . "\n";
                $ErrorMessage .= 'Whole query: ' . $query;
            die( $ErrorMessage );
    }

    $JSON_output = array();
        while ( $row = mysql_fetch_assoc( $result ) )
    {

    $JSON_output[] = array('column_name'        => $row['column_name'], 
                            'count'         => $row['COUNT(*)'],
                        );
    }

Я бы предположил, что этот маршрут будет проще, но может ошибаться :) Надеюсь, он поможет вам или кому-то еще:)

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