Uma contagem de PHP do número de itens retornados no pedido JSON?

Estou procurando uma maneira de contar o número de itens (em PHP) retornados nessas seqüências JSON que estou obtendo ao pesquisar um database.

Perdoe-me porque eu sou absolutamente nada disso.

Foi-me dito que não há uma contagem devolvida na versão JSON, como se houver no XML a partir deste database, eu teria que usar um loop para contar o número de resultados?

Eu tive uma olhada, mas nada parece se encheckboxr no que eu quero fazer …

O seguinte é um exemplo das cordas que recebo:

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 ) ) 

e, se aplicável, aqui está o php que eu uso para solicitar e decifrá-lo

 $name = $_GET['search']; $persons_result = $tmdb->searchPerson($name); $persons = json_decode($persons_result); foreach ($persons as $person) { echo 'id.'">'.$person->name.'
'; }

Use a function de count em $persons para obter o número de itens.

Isso deve fazer o truque.

 $iCount = count($persons) 

Quando você chama json_decode você está obtendo uma variável PHP que contém uma série de itens e valores.

Atualmente você está obtendo o que é chamado de stdClass mas se você adicionar true parâmetro true à sua function json_decode , você terá uma matriz normal. Embora use o parâmetro true ou não, você ainda pode count 🙂

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

Ai está 🙂

Se você executar uma consulta idêntica a abaixo, ela retornará o item e contará itens exclusivos

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

O que retornará [{“column_name”: “column_data_result”, “count”: “1”}] via json.

Você pode usar o código abaixo e exibirá o resultado do json de volta. Claro que você precisará se conectar ao SQL para usar abaixo.

 $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(*)'], ); } 

Eu assumiria que seria mais fácil esta rota, mas poderia estar errado 🙂 Espero que ajude você ou outra pessoa a sair 🙂