この記事では、主に PHP ソースコードに関する簡単な説明その 22 について紹介します。array_splice 関数については、必要な友人に参照してもらえるように共有します。 # PHP ソース コードに関する簡単な説明 22: array_splice 関数について
array_splice(PHP 4, PHP 5)
array_splice - 配列の一部を削除し、他の値に置き換えます
array array_splice (array &input, int offset [, int length [, array replace]] )
array_splice() 入力配列の offset と length で指定されたセルを削除します。パラメータが指定されている場合は、置換配列内のセルを使用します。削除されたセルを含む配列を返します。入力内の数値キー名は保持されないことに注意してください。
オフセットが正の場合、入力配列の値で指定されたオフセットから削除が開始されます。 offset が負の場合、入力の末尾からこの値で指定されたオフセットで削除が開始されます。
長さを省略した場合、オフセットから末尾までの配列のすべての部分が削除されます。長さが指定されており、それが正の場合、この数のセルが削除されます。 length が指定され、負の場合、配列の末尾からカウントダウンした offset から length までのすべての要素が削除されます。ヒント: 置換が指定されたときに、オフセットから配列の末尾までのすべての要素を削除するには、長さとして count($input) を使用します。
置換配列が指定された場合、削除されたセルはこの配列内のセルに置き換えられます。オフセットと長さの組み合わせによって値が削除されない場合、置換配列内の要素はオフセットで指定された位置に挿入されます。置換配列内のキー名は保持されないことに注意してください。置換に使用される値が単なるユニットの場合、ユニット自体が配列でない限り、それに array() を追加する必要はありません。
array_splice 関数は php_splice 関数を呼び出します。この関数の内容は次のとおりです。
/* 创建并初始化返回数组,此返回数组为php_splice的返回数组,并非array_splice的返回数组(array_splice的返回数组为removed)*/ALLOC_HASHTABLE(out_hash); zend_hash_init(out_hash, 0, NULL, ZVAL_PTR_DTOR, 0);/*将数组中从开始到offset的元素拷贝到返回数组中 */for (pos=0, p=in_hash->pListHead; pos<offset && p ; pos++, p=p->pListNext) { entry = *((zval **)p->pData); entry->refcount++;/*更新返回数组 */if (p->nKeyLength) zend_hash_quick_update(out_hash, p->arKey, p->nKeyLength, p->h, &entry, sizeof(zval *), NULL);else zend_hash_next_index_insert(out_hash, &entry, sizeof(zval *), NULL);}/* 将需要移除的元素赋值给removed,即array_splice的返回数组 */if (removed != NULL) { for ( ; pos<offset+length && p; pos++, p=p->pListNext) { entry = *((zval **)p->pData); entry->refcount++; if (p->nKeyLength) zend_hash_quick_update(*removed, p->arKey, p->nKeyLength, p->h, &entry, sizeof(zval *), NULL); else zend_hash_next_index_insert(*removed, &entry, sizeof(zval *), NULL); }} else /* 其它情况,跳过这些元素 */ for ( ; pos<offset+length && p; pos++, p=p->pListNext);/* 如果有元素需要插入,即有replacement参数 */if (list != NULL) {/* 对于每个元素,创建新的zval,拷贝并将它写入到返回数组中*/ for (i=0; i<list_count; i++) { entry = *list[i]; entry->refcount++; zend_hash_next_index_insert(out_hash, &entry, sizeof(zval *), NULL); }}/* 拷贝剩下的元素 */for ( ; p ; p=p->pListNext) { entry = *((zval **)p->pData); entry->refcount++; if (p->nKeyLength) zend_hash_quick_update(out_hash, p->arKey, p->nKeyLength, p->h, &entry, sizeof(zval *), NULL); else zend_hash_next_index_insert(out_hash, &entry, sizeof(zval *), NULL);} /* 重置数组的游标,相当于reset函数*/zend_hash_internal_pointer_reset(out_hash);
プロセス全体:
1. 開始からオフセットまでの要素を戻り配列にコピーします。2. オフセットからオフセット+長さまでの要素を削除します。 ##3. 置換された要素がある場合は、オフセット後の位置に新しい要素を挿入します##4。返された配列の後ろに関数を挿入します
5。 ##以上がこの記事の全内容です。皆様の学習にお役に立てれば幸いです。その他の関連コンテンツについては、PHP 中国語 Web サイトをご覧ください。
関連する推奨事項:
概要PHP ソースコードに関するディスカッションその 21 : array_flip、array_reverse 関数について
以上がPHP ソース コード 22 についての簡単な説明: array_splice 関数についての詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

依存関係の依存性、テスト可能性、および維持可能性の依存性の依存性の依存性、および維持可能性は、エクステルンド依存性を維持する可能性があります

PHPパフォーマンスの最適化は、次の手順を通じて実現できます。1)スクリプトの上部にrequire_onceまたはinclude_onceを使用して、ファイルの負荷数を減らすことができます。 2)プリプロセシングステートメントとバッチ処理を使用して、データベースクエリの数を減らします。 3)OpCodeキャッシュのOpCacheを構成します。 4)PHP-FPM最適化プロセス管理を有効にして構成します。 5)CDNを使用して静的リソースを配布します。 6)コードパフォーマンス分析には、XdebugまたはBlackfireを使用します。 7)配列などの効率的なデータ構造を選択します。 8)最適化実行のためのモジュラーコードを記述します。

opcodeCachingsificlyprovesppherformanceBycachingCompiledCode、reducingServerloadandResponsetimes.1)itStoresPhpCodeInMemory、バイパス補助補強団体

依存関係注射は、PHPでの外部注入を通じてオブジェクトの依存関係を提供し、コードの保守性と柔軟性を向上させます。その実装方法には、1。コンストラクターインジェクション、2。SET値インジェクション、3。インターフェイスインジェクション。依存関係の注入を使用すると、テスト可能性と柔軟性が向上する可能性がありますが、複雑さとパフォーマンスのオーバーヘッドの増加の可能性に注意を払う必要があります。

PHPでの依存関係注射(DI)の実装は、手動注入またはDIコンテナを使用して実行できます。 1)手動注入は、ロガーを注入するユーザーサービスクラスなど、コンストラクターを介して依存関係を渡します。 2)DIコンテナを使用して、コンテナクラスなどの依存関係を自動的に管理し、ロガーとユーザーサービスを管理します。 DIを実装すると、コードの柔軟性とテスト能力が向上する可能性がありますが、オーバーインジェクションやサービスロケーターアンチモードなどのトラップに注意を払う必要があります。

thedifferencebetferencefued fieneunset()andsession_destroy()isthatunset()clearsspecificsessionvariablesはsessionactiveであり、ssession_destroy()ターミナテンテンセッション

StickysionsionsureuserRequestsoredtotheSameserverforsessiondataconsistency.1)Sessionidedificationisionidificationsisignivisionsignsignsuserstoserversusing okiesorurlmodifications.2)CondingRoutingDirectSSubSubSubsEntRequestStotheSameserver.3)LoadBalancingDistributeNewuser

phpoffersvarioussionsionsavehandlers:1)ファイル:デフォルト、simplebutmaybottleneckonhigh-trafficsites.2)memcached:high-performance、yealforspeed-criticalapplications.3)redis:similartomcached、witordededpersistence.4)データベースの提供


ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

Video Face Swap
完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

人気の記事

ホットツール

mPDF
mPDF は、UTF-8 でエンコードされた HTML から PDF ファイルを生成できる PHP ライブラリです。オリジナルの作者である Ian Back は、Web サイトから「オンザフライ」で PDF ファイルを出力し、さまざまな言語を処理するために mPDF を作成しました。 HTML2FPDF などのオリジナルのスクリプトよりも遅く、Unicode フォントを使用すると生成されるファイルが大きくなりますが、CSS スタイルなどをサポートし、多くの機能強化が施されています。 RTL (アラビア語とヘブライ語) や CJK (中国語、日本語、韓国語) を含むほぼすべての言語をサポートします。ネストされたブロックレベル要素 (P、DIV など) をサポートします。

SublimeText3 Linux 新バージョン
SublimeText3 Linux 最新バージョン

MinGW - Minimalist GNU for Windows
このプロジェクトは osdn.net/projects/mingw に移行中です。引き続きそこでフォローしていただけます。 MinGW: GNU Compiler Collection (GCC) のネイティブ Windows ポートであり、ネイティブ Windows アプリケーションを構築するための自由に配布可能なインポート ライブラリとヘッダー ファイルであり、C99 機能をサポートする MSVC ランタイムの拡張機能が含まれています。すべての MinGW ソフトウェアは 64 ビット Windows プラットフォームで実行できます。

WebStorm Mac版
便利なJavaScript開発ツール

AtomエディタMac版ダウンロード
最も人気のあるオープンソースエディター
