2012-02-10 7 views
0

phpでは、関数カウントはJSONオブジェクトでも機能しますか?オブジェクトの要素数を返しますか?または、この関数は配列に対してのみ機能しますか?JSONオブジェクトのPHPでのカウント関数

count($varJSONobject); 
+0

可能な重複:http://stackoverflow.com/questions/5923149/a-php-count-of-the-number-of -items-returned-json-request –

+0

いいえ、重複していません。答えは同じかもしれませんが、質問は異なります。 なぜそれは可能な複製ですか?あなたがそれがそうだと思うなら、それを言うか、私の質問に対する答えを知らないのですか?もしそうなら、それに答えてください。あなたがしない場合は、静かにすることができます、あなたは確信していないだけでdownvoteする必要はありません。ありがとうございました –

+0

私はあなたの質問をd​​ownvoteしなかった。質問に「可能な重複」リンクを追加することは、ここではかなり一般的です。それは個人的なものではありません。 –

答えて

3

PHPでJSONobjectのようなものはありません(それはいくつかのユーザー定義の何かまたは他のでない限り)。 json_decodedocsによって生成された配列またはstdClassインスタンスのみがあり、countと一緒に使用できます。

countにはオブジェクトにCountabledocsインターフェイスを実装させることでオブジェクトを応答させることができます。完全を期すために

は、以下の countの結果を考慮してください。

$test = new stdClass; 
$test->prop1 = 1; 
$test->prop2 = 1; 
var_dump(count($test)); // 1 

$test = (array) $test; 
var_dump(count($test)); // 2 

class CountTest { 
    public $prop1 = 1; 
    public $prop2 = 1; 
} 

$test = new CountTest; 
var_dump(count($test)); // 1 

$test = (array) $test; 
var_dump(count($test)); // 2 

// class implementing Countable 
class CountMe implements Countable { 
    protected $myCount = 3; 
    public function count(){ 
    return $this->myCount; 
    } 
} 
$test = new CountMe; 
var_dump(count($test)); // 3 
+1

これは実際には真実ではなく、私は投票しなければなりませんが、修正することができます。 'json_decode'は、オブジェクトのためにデフォルトでオブジェクト(stdClass)を返します。ただし、' true'を2番目のパラメータとして渡さない限り、それは配列だけを返します。 – Orbling

+0

これらはjson_decodeによって生成された配列です。ありがとうございました! –

+1

orblingありがとう - 私は 'json_decode'時には、私はこのように使うことができる配列を得るために' true'を渡すべきですか?ありがとうございました! –

関連する問題