ホームページ >バックエンド開発 >PHPチュートリアル >PHP での配列の実装 kernel_PHP チュートリアル

PHP での配列の実装 kernel_PHP チュートリアル

WBOY
WBOYオリジナル
2016-07-13 10:29:18914ブラウズ

PHP では配列がよく使われます。各要素のサイズが同じであるため、読み取りと書き込みは瞬時に計算できます。メモリ内の対応する要素の位置を特定するため、直接取り出したり書き込んだりできます。では、配列はカーネルにどのように実装されるのでしょうか?

PHP のほとんどの関数は、配列を含めて HashTable を通じて実装されます。

HashTable は二重リンクリストの利点を持ち、データに匹敵する演算性能を持っています。

  • PHP で定義された変数はシンボル テーブルに格納されます。このシンボル テーブルは実際には HashTable であり、その各要素は zval* 型の変数です。それだけでなく、ユーザー定義の関数、クラス、リソースなどを格納するコンテナーが HashTable の形式でカーネルに実装されます。

    PHP とカーネルでそれぞれ配列を定義する方法を見てみましょう。

    配列定義の実装

    PHPで配列を定義します:

    れーれー
    これを実現するには、カーネルでマクロを使用します。

    れーれー
    上記のコードのマクロを展開します:

    れーれー

    便利な配列マクロ操作


    カーネルは、配列を管理するための便利なマクロを提供します。

    リーリー

    以下では、一般的な配列操作に対応するマクロを比較できます。

    add_next_index_*()

    れーれー
    add_index_*()

    れーれー
    add_assoc_*()

    れーれー

    完全な例

    次に、PHP で関数を定義し、その中で配列を使用します。次に、それをカーネルに実装する方法を見てみましょう。


    れーれー
    カーネルに実装:

    れーれー
    上記のコードの変数 return_value がどこで定義されているか疑問に思うかもしれません。以下の PHP_FUNCTION を展開すると理解できます。

    れーれー
    そうです、実際、すべての関数にはデフォルトの戻り値 return_value があります。関数の戻り値として RETVAL_*()、RETURN_*() を使用する場合、return_value のみが変更されます。

    www.bkjia.comtru​​ehttp://www.bkjia.com/PHPjc/777570.html技術記事 PHP では配列がよく使われます。PHP の配列は、各要素のサイズが同じであるため、読み取りと書き込みを瞬時に行うことができます。 .
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。