PHP では、配列とセットは非常に一般的なデータ構造です。配列は、数値、文字列、オブジェクトなどのさまざまなタイプのデータを含めることができる、順序付けられたコレクションです。セットはより抽象的で、要素のコレクションを表します。各要素は一意であり、特定の順序やインデックスはありません。
実際の開発では、より効率的な検索と操作を容易にするために、配列をセットに変換する必要があることがよくあります。 PHP では、この変換を実装するのは非常に簡単です。この記事ではその実装方法とテクニックを紹介します。
1. array_unique 関数を使用する
PHP には、配列内の重複要素を削除するために使用できる組み込み関数 array_unique があります。この関数の基本的な構文は次のとおりです。
array array_unique ( array $array [, int $sort_flags = SORT_STRING ] )
このうち、 $array は重複排除が必要な配列を表し、 $sort_flags はオプションの並べ替え方法を表します。一般的なものは SORT_STRING (文字列で並べ替え)、 SORT_NUMERIC (数値順に並べ替える) 方法で並べ替える) や SORT_REGULAR (自然な順序で並べ替える) など。
配列を array_unique 関数に渡すと、一意の要素を含む新しい配列が返されます。例:
$arr = array(1,2,2,3,3,3); $set = array_unique($arr); print_r($set); // 输出 Array ( [0] => 1 [1] => 2 [3] => 3 )
array_unique 関数を使用すると、配列をセットに簡単に変換できることがわかります。
2. array_flip 関数を使用する
array_unique 関数を使用する以外に、配列をコレクションに変換する簡単な方法として、array_flip 関数を使用する方法があります。この関数は、配列内のキーと値を交換するために使用されます。つまり、配列内の値は新しい配列のキーとして使用され、元のキーは無視されます。関数の基本的な構文は次のとおりです。
array array_flip ( array $array )
このうち、$array は、キーと値を交換する必要がある配列を表します。 array_flip 関数に配列を渡すと、元の配列の値をキーとして、新しい配列のすべての値を含む新しい配列が返されます。例:
$arr = array('a', 'b', 'c'); $set = array_flip($arr); print_r($set); // 输出 Array ( [a] => 0 [b] => 1 [c] => 2 )
コレクション内の要素は一意である必要があるため、新しい配列の値を無視してそのキーのみを保持できます。つまり、
$arr = array('a', 'b', 'c'); $set = array_flip($arr); $set = array_keys($set); print_r($set); // 输出 Array ( [0] => a [1] => b [2] => c )
このようにします。 、元の配列内のすべての要素を含む A コレクションを取得します。
3. array_reduce 関数を使用する
もう 1 つの一般的に使用される方法は、array_reduce 関数を使用することです。この関数は、配列内のすべての要素を反復的に計算し、最終結果を返すために使用されます。関数の基本的な構文は次のとおりです。
mixed array_reduce ( array $array , callable $callback [, mixed $initial = NULL ] )
このうち、$array は反復計算が必要な配列を表し、$callback は配列内の要素を計算するために使用されるコールバック関数、$initial はオプションの初期値。反復プロセス中の初期状態を指定するために使用されます。コールバック関数の基本的な構文は次のとおりです。
mixed function callback ( mixed $carry , mixed $item )
このうち、$carry は前の反復の結果を表し、$item は現在の反復の要素を表します。コールバック関数は、最後の計算結果と現在の要素に基づいて新しい計算結果を生成し、次の反復のために array_reduce 関数に返します。
配列をコレクションに変換するには、コールバック関数で重複排除の手法を使用する必要があります。具体的には、PHP の配列参照手法を使用して、値をコレクション内のキーとして使用し、値自体を 1 に設定して、各キーに対応する値が 1 になるようにすることで、コレクション内の要素が一意になるようにすることができます。 。コードは次のとおりです。
$arr = array(1,2,2,3,3,3); $set = array_reduce($arr, function(&$res, $cur){ $res[$cur] = 1; return $res; }, array()); print_r(array_keys($set)); // 输出 Array ( [0] => 1 [1] => 2 [2] => 3 )
上記のコールバック関数の処理により、元の配列をコレクションに変換することができました。もちろん、コールバック関数で交差、和集合、差分などの他のセット固有の演算を使用することもできます。
概要
配列をコレクションに変換することは、実際の開発では非常に一般的です。 PHP には、組み込み関数 array_unique、array_flip、array_reduce の使用など、この変換を実行する方法がいくつか用意されていますが、それぞれに長所と短所があります。実際のシナリオでは、開発者は特定の状況に応じてさまざまな方法を選択して、コードの効率性と読みやすさを確保できます。
以上がphp配列をコレクションにの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。