ホームページ  >  記事  >  バックエンド開発  >  PHP ソース コードの簡単な説明 8: array_pop、array_shift の概要

PHP ソース コードの簡単な説明 8: array_pop、array_shift の概要

不言
不言オリジナル
2018-06-28 16:55:012085ブラウズ

この記事では、PHP ソース コード 8: array_pop と array_shift について紹介します。必要な方は参考にしてください。中国の旧正月、休暇の時期が来ました。いくつかのことを片付ける必要があり、家に帰る準備をしている人もいます。

私が家に帰らなかったのは今年初めてです。 。 。 。 。


どうやら一週間も該当のソースコードを見ていなかったようですが、もうやる気がなくなったのでしょうか?

諸事情で要件を緩められないようなので、先月買った本のうちの1冊を読み終わりました。 。 。


私はナンセンスなことを言ったようです。 。 。

standard/array.c には、array_pop と array_shift という 2 つの関数の C 実装があります。

mixed array_pop (array &array)

array_pop() ポップして配列を返します。配列の最後の要素で、配列の長さを 1 つ減らします。配列が空の場合 (または配列ではない場合)、NULL が返されます。

注: この関数を使用した後、配列ポインタはリセットされます (reset())。

mixed array_shift (array &array)

array_shift() 配列の最初の要素をシフトして結果として返し、配列の長さを 1 つ減らし、他のすべての要素を 1 つ前にシフトします。すべての数値キー名は 0 から数えるように変更され、テキスト キー名は変更されません。配列が空の場合 (または配列ではない場合)、NULL が返されます。

注: この関数を使用した後、配列ポインタはリセットされます (reset())

両方の関数が実装で使用されます

   /* {{{ proto mixed array_pop(array stack)
   Pops an element off the end of the array */PHP_FUNCTION(array_pop){
 _phpi_pop(INTERNAL_FUNCTION_PARAM_PASSTHRU, 1);}/* }}} */ /* {{{ proto mixed array_shift(array stack)
   Pops an element off the beginning of the array */PHP_FUNCTION(array_shift){
 _phpi_pop(INTERNAL_FUNCTION_PARAM_PASSTHRU, 0);}

プログラムは最初に入力を決定します。配列内に要素があるかどうかを判断します。

If it is array_pop:

==>zend_hash_internal_pointer_end
==>zend_hash_internal_pointer_end_ex(ht, NULL)
この時点で直接、ハッシュテーブル内の二重リンクリストの最後の要素を返します。 ht->pInternalPointer = ht->pListTail;

array_shift の場合:

==>zend_hash_internal_pointer_reset( Z_ARRVAL_PP(stack));

= =>zend_hash_internal_pointer_reset_ex(ht, NULL)
このとき、ハッシュテーブル内の二重リンクリストの最初の要素が直接返されます。 ht->pInternalPointer = ht-> pListHead;

  zend_hash_get_current_data 
==> zend_hash_get_current_data_ex(ht, pData, NULL) 
 p = pos ? (*pos) : ht->pInternalPointer;*pData = p->pData;

を通じて戻り値を取得します。

ハッシュテーブルの値を取得します。

次に、ハッシュテーブルのキー値を削除し、zend_hash_internal_pointer_reset を呼び出してハッシュテーブルをリセットします。
このリセットは: ht->pInternalPointer = ht->pListHead;
つまり、現在位置をリンクされたリストの最初の要素に設定します。

上記がこの記事の全内容です。その他の関連コンテンツについては、PHP 中国語 Web サイトをご覧ください。

関連する推奨事項:

PHP ソース コード 7 についての簡単な説明: nl2br、ltrim、rtrim、trim 関数について

# PHP ソース コード 6 についての簡単な説明: stream_get_wrappers 関数について

PHP ソース コード 5 についての簡単な説明: 配列 array の作成について

以上がPHP ソース コードの簡単な説明 8: array_pop、array_shift の概要の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。