ホームページ >バックエンド開発 >PHPチュートリアル >PHP ソース コード 9 の簡単な説明: array_unshift、array_push の概要
この記事では、主に PHP ソース コード 9 である array_unshift と array_push についての簡単な説明を紹介します。これを必要な友人に共有します。
今日は旧正月です。友達全員が新年明けましておめでとうございます。
PHP ソース コード 9 についての簡単な説明: array_unshift、array_push の概要
int array_unshift (array &array、mixed var [,mixed ...])
array_unshift( ) will 渡されたセルは配列 array の先頭に挿入されます。セルは全体として挿入されるため、入力されるセルは同じ順序のままであることに注意してください。すべての数値キー名は、再びゼロからカウントを開始するように変更されますが、すべてのテキスト キー名は変更されません。
配列 array 内の新しいセルの数を返します。
standard/array.c の 2080 行目に、この関数 PHP_FUNCTION(array_unshift) の C 実装が表示されます。
プログラムは、最初に入力パラメーターの数が正しいかどうかを判断します。 2 未満の場合、エラーを報告します。
次に、最初のパラメータが配列であるかどうかを判断します。そうでない場合は、エラーを報告して終了します。
その後、プログラムは new_hash = php_splice(Z_ARRVAL_P(stack), 0, 0) を呼び出します。 , &args[1], argc-1, NULL) ;
HashTable* php_splice(HashTable *in_hash, int offset, int length, zval ***list, int list_count, HashTable **removed)
この関数は array.c
の行 1861 にあります。最初に in_hash (元のハッシュテーブル) の一部を新しいハッシュテーブルにコピーします。この部分は、array_unshif で指定されたオフセットと長さに基づいて計算されます。したがって、hashtable
はリストを走査し、各要素の zval を作成し、zend_hash_next_index_insert を使用して新しい hashtable
に挿入し、in_hash 内の残りの要素を新しいハッシュテーブル。ここでは、 offset と length が両方とも 0 なので、すべてハッシュテーブルです。
最後に、新しく生成されたハッシュテーブルを返します。
プロセス全体は、最初にリスト内のデータをハッシュテーブルに書き込むことと同じです。古いデータをハッシュテーブルに書き込み、配列の先頭を実現します。要素を挿入します。
次に、古い配列が配置されているハッシュテーブルを削除し、新しいハッシュテーブルを更新して、ハッシュテーブルの内部ポインタをリセットします。
ハッシュテーブル内の要素の数 (つまり、新しく生成された配列の長さ) を返します
int array_push (array &array,mixed var [,mixed ...])
array_push() は配列をスタックとして扱い、渡された変数を配列の最後にプッシュします。配列の長さは、スタックにプッシュされた変数の数に応じて増加します。
次と同じ効果:
<?php$array[] = $var;?>
そして、変数ごとに上記のアクションを繰り返します。
配列内の新しいセルの総数を返します。
この実装は比較的単純です:
指定されたパラメータを直接走査し、各要素の zval を作成し、その参照に 1 つ追加し、配列が配置されているハッシュテーブルの最後に追加します。
ハッシュテーブル内の要素の数 (つまり、新しく生成された配列の長さ) を返します
以上がこの記事の全内容であり、皆さんの学習に役立つことを願っています。その他の関連コンテンツについては、PHP 中国語 Web サイトに注目してください。
関連する推奨事項:
PHP ソース コードに関する簡単な説明 8: array_pop、array_shift の概要
PHP ソース コードに関する簡単な説明コード 7: nl2br 、 ltrim、rtrim、trim 関数について
# PHP ソース コード 6: stream_get_wrappers 関数についての簡単な説明 #
以上がPHP ソース コード 9 の簡単な説明: array_unshift、array_push の概要の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。