検索
ホームページphp教程PHP开发PHPのarray_slice関数とarray_splice関数の分析

この記事ではphpのarray_slice関数とarray_splice関数を中心に紹介していますので、興味のある方はぜひご覧ください

array_slice関数とarray_splice関数は配列のスライスを取り出す関数でもあります。元の削除されたスライス位置と新しいスライス。 JavaScript の Array.prototype.splice メソッドと Array.prototype.slice メソッドに似ています。


array_slice

array array_slice ( array $array , int $offset [, int $length = NULL [, bool $preserve_keys = false ]] )

配列内の指定された添字オフセットと長さの部分配列スライスを返します。

パラメータの説明

最初のパラメータ配列の長さが num_in であると仮定します。

offset


offset が正の数で length より小さい場合、返される配列は offset から始まります; offset が length より大きい場合、演算は実行されず、直接返されます。 offset が負の数の場合、offset = num_in+offset、num_in+offset == 0 の場合、offset は 0 に設定されます。

length


length が 0 未満の場合、length は num_in - offset + length に変換され、それ以外の場合、offset+length > array_count の場合、length = num_in - offset になります。処理後も長さがまだ 0 未満の場合は、そのまま返されます。

preserve_keys


デフォルトでは数値キー値の元の順序は保持されません。 true に設定すると、配列の元の数値キー値の順序が保持されます。

使用例

<?php
$input = array("a", "b", "c", "d", "e");
 
$output = array_slice($input, 2);   // returns "c", "d", and "e"
$output = array_slice($input, -2, 1); // returns "d"
$output = array_slice($input, 0, 3);  // returns "a", "b", and "c"
 
print_r(array_slice($input, 2, -1)); // array(0 => &#39;c&#39;, 1 => &#39;d&#39;);
print_r(array_slice($input, 2, -1, true)); // array(2 => &#39;c&#39;, 1 => &#39;d&#39;);

実行ステップ


処理パラメータ: offset、length

offset が指す位置にポインタを移動

offset から開始し、length 要素を戻り配列にコピーします

動作フローチャートは次のとおりですfollow

PHPのarray_slice関数とarray_splice関数の分析

array_splice

array array_splice ( array &$input , int $offset [, int $length = 0 [, mixed $replacement = array() ]] )

入力の offset から始まる長さの要素を削除します。 置換パラメータがある場合は、置換配列を使用して削除された要素を置き換えます。

パラメータの説明

array_splice 関数の offset および length パラメータは、array_slice 関数と同じように使用されます。

replacement

このパラメータが設定されている場合、関数は置換配列を使用して置換します。

オフセットと長さで要素を削除する必要がないことが指定されている場合、置換はオフセット位置に挿入されます。

置換の要素が 1 つだけの場合は、array() でラップする必要はありません。

使用例

<?php
$input = array("red", "green", "blue", "yellow");
array_splice($input, 2);
// $input变为 array("red", "green")
 
$input = array("red", "green", "blue", "yellow");
array_splice($input, 1, -1);
// $input变为 array("red", "yellow")
 
$input = array("red", "green", "blue", "yellow");
array_splice($input, 1, count($input), "orange");
// $input变为 array("red", "orange")
 
$input = array("red", "green", "blue", "yellow");
array_splice($input, -1, 1, array("black", "maroon"));
// $input为 array("red", "green",
//     "blue", "black", "maroon")
 
$input = array("red", "green", "blue", "yellow");
array_splice($input, 3, 0, "purple");
// $input为 array("red", "green",
//     "blue", "purple", "yellow");

ソースコードの解釈


array_splice には、次のようなコードがあります:

/* Don&#39;t create the array of removed elements if it&#39;s not going
  * to be used; e.g. only removing and/or replacing elements */
 if (return_value_used) { // 如果有用到函数返回值则创建返回数组,否则不创建返回数组
   int size = length;
 
   /* Clamp the offset.. */
   if (offset > num_in) {
     offset = num_in;
   } else if (offset < 0 && (offset = (num_in + offset)) < 0) {
     offset = 0;
   }
 
   /* ..and the length */
   if (length < 0) {
     size = num_in - offset + length;
   } else if (((unsigned long) offset + (unsigned long) length) > (unsigned) num_in)     {
     size = num_in - offset;
   }
 
   /* Initialize return value */
   array_init_size(return_value, size > 0 ? size : 0);
   rem_hash = &Z_ARRVAL_P(return_value);
 }

array_splice 関数は、削除されたスライスを返します。このコードの意味は、array_splice が値を返す必要がある場合は戻り配列を作成し、それ以外の場合はスペースの無駄を避けるために戻り配列を作成しないことです。これもちょっとしたプログラミングのトリックで、必要な場合にのみ返します。たとえば、$result = array_splice(...) が関数で使用される場合、return_value_used は true になります。


まとめ


日常のプログラミングでは、これら 2 つの関数を実装したときと同様に、最も特殊な状況に最初に対処し、その後で重複した判断を行わないようにする必要があります。新しい変数を保存する必要がある場合は、新しいスペースを確保します。そうでない場合は、無駄が発生します。


読んでいただきありがとうございます、お役に立てれば幸いです、このサイトをサポートしていただきありがとうございます!

PHP の array_slice 関数と array_splice 関数の分析に関連するその他の記事については、PHP 中国語 Web サイトに注目してください。

関連記事:

php配列関数 sequence array_slice()

php array_slice関数の使い方とパラメータの詳細解説

php array_sliceは配列内のシーケンスインスタンスを取り出します

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

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

SecLists

SecLists

SecLists は、セキュリティ テスターの究極の相棒です。これは、セキュリティ評価中に頻繁に使用されるさまざまな種類のリストを 1 か所にまとめたものです。 SecLists は、セキュリティ テスターが必要とする可能性のあるすべてのリストを便利に提供することで、セキュリティ テストをより効率的かつ生産的にするのに役立ちます。リストの種類には、ユーザー名、パスワード、URL、ファジング ペイロード、機密データ パターン、Web シェルなどが含まれます。テスターはこのリポジトリを新しいテスト マシンにプルするだけで、必要なあらゆる種類のリストにアクセスできるようになります。

DVWA

DVWA

Damn Vulnerable Web App (DVWA) は、非常に脆弱な PHP/MySQL Web アプリケーションです。その主な目的は、セキュリティ専門家が法的環境でスキルとツールをテストするのに役立ち、Web 開発者が Web アプリケーションを保護するプロセスをより深く理解できるようにし、教師/生徒が教室環境で Web アプリケーションを教え/学習できるようにすることです。安全。 DVWA の目標は、シンプルでわかりやすいインターフェイスを通じて、さまざまな難易度で最も一般的な Web 脆弱性のいくつかを実践することです。このソフトウェアは、

SAP NetWeaver Server Adapter for Eclipse

SAP NetWeaver Server Adapter for Eclipse

Eclipse を SAP NetWeaver アプリケーション サーバーと統合します。