ホームページ >バックエンド開発 >PHPチュートリアル >【PHPソースコード読み込み】count関数、phpソースコードcount関数_PHPチュートリアル

【PHPソースコード読み込み】count関数、phpソースコードcount関数_PHPチュートリアル

WBOY
WBOYオリジナル
2016-07-12 08:51:251078ブラウズ

【PHPソースコード読み込み】count関数、phpソースコードcount関数

PHPプログラミングでは、配列を走査する際、ループ終了の判定条件として、まず配列の長さを計算する必要があることがよくあります。 PHP では配列の操作が非常に頻繁に行われるため、count 関数の具体的な実装を学習してみましょう。

github の PHP ソース コードにさらに詳細な注釈を付けています。興味があれば、見てスターを付けてください。 PHP5.4のソースコードのアノテーション。追加されたアノテーションは、コミット レコードを通じて確認できます。

数える

リーリー

count 関数は、配列またはオブジェクト内のすべての要素の数をカウントします。

オブジェクトの場合、SPL 拡張機能をインストールすると、Countable インターフェイスを実装して count 関数を呼び出すことができます。 Countable インターフェイスには、count() 関数の戻り値を返すメソッド Countable::count() が 1 つだけあります。

パラメータの説明

モード

パラメータモードが COUNT_RECURSIVE (または 1) に設定されている場合、count() は配列を再帰的に計算します。多次元配列を計算する場合に特に便利です。

最初のパラメータが配列または Countable インターフェイスを実装するオブジェクトでない場合、count 関数は 1 を返します。

注: count 関数は無限ループを回避するために再帰を検出できますが、無限再帰が発生したり、予想より大きな値を取得したりすると、E_WARNING プロンプトが返されます。

サンプルを実行する

通常のアプリケーション

リーリー

多次元配列

リーリー

数値と文字列

リーリー

一般的なオブジェクト

リーリー

配列のようなオブジェクト

リーリー

Countableインターフェイスオブジェクトを実装する

リーリー

ステップを実行する

リーリー

ソースコードの解釈

通常の配列の場合、count 関数は php_count_recursive を呼び出しますその関数を実装する手順は次のとおりです:

リーリー

パラメータがオブジェクト型の場合、実装はまずハンドラーが定義されているかどうかを判断します。ハンドラーは PHP カーネル内のオブジェクトの構造であり、実際には関数である count_elements フィールドが含まれています。オブジェクトが配列のように動作する場合 (一般に 配列様オブジェクト と呼ばれます)、count_elements 関数が実行されます。具体的な実装では、クラスが PHP の ArrayObject を継承し、クラス内に count 関数を実装します。その具体的な呼び出しは、クラスが count 関数を実装していない場合は 0 を返し、それ以外の場合はオブジェクトの count 関数の戻り値を返します。が返されます。

その他のデータ型の場合
1、string

2. 数字

3. オブジェクトブランチの if 判定が両方とも false の場合、つまり ArrayObject が継承されず、Countable インターフェースが実装されていない場合。

これらの型はすべて 1 を返します。

オブジェクトの属性の数を計算する必要がある場合は、まずオブジェクトを配列に変換してから、count 関数を呼び出すことができることに注意してください。例:
$count_value = count((array) $user);

まとめ

count 関数のソース コードを読んでいるときに、if (Z_OBJ_HT_P(array)->count_elements) ステップで行き詰まってしまいました。このブランチに入るデモをまだ作成できなかったので、検索しました。インターネット上にたくさんの情報があっても役に立たなかったので、TIPI の reeze に相談して、最終的に希望する答えを得ることができました。分からなかったら聞いてください(笑)。

限られた文体と限られた知識によるオリジナル記事 記事内に何か間違っている点がございましたら、お知らせください。

この記事がお役に立ちましたら、クリックしておすすめしてください、ありがとうございます^_^

最後に、おまけとして、github の PHP ソース コードにさらに詳細な注釈を付けました。興味があれば、見てスターを付けてください。 PHP5.4のソースコードのアノテーション。追加されたアノテーションは、コミット レコードを通じて確認できます。

その他のソース コード記事については、個人のホームページにアクセスして閲覧を続けてください: hoohack

www.bkjia.comtru​​ehttp://www.bkjia.com/PHPjc/1130480.html技術記事 【PHPソースコード読み込み】count関数、phpソースコードcount関数 PHPプログラミングでは、配列を走査する際、ループ終了の判断条件として、まず配列の長さを計算する必要があることがよくあります。向いてる…
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。