json_decode を使用して JSON データから作成されたオブジェクトを操作する場合、count() 関数が返すという問題が発生する可能性があります。オブジェクトには多数のプロパティがあるにもかかわらず、値が正しくありません。
次の例を考えてみましょう:
[trends] => stdClass Object ( [2009-08-21 11:05] => Array ( [0] => stdClass Object ( [query] => "Follow Friday" [name] => Follow Friday ) ... [19] => stdClass Object ( [query] => H1N1 [name] => H1N1 ) ) )
このオブジェクトで count($obj) を実行すると 1 が返されます。 、30の物件があるにもかかわらず。これは、count() がオブジェクトのプロパティではなく、配列内のインデックスの数をカウントするように設計されているためです。
この問題を解決するには、オブジェクトを配列にキャストします。
$total = count((array)$obj);
オブジェクトを配列としてキャストすると、count() はインデックスではなくプロパティの数を評価します。この例では、$total は 30 個のプロパティの数を正確に反映します。
このキャスト手法は、常に適用できるとは限りません。ただし、提供されているような単純な stdClass オブジェクトの場合は、正しいプロパティ数を取得するだけで十分です。
以上がPHP で stdClass オブジェクトのプロパティを正確にカウントするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。