ホームページ > バックエンド開発 > PHPの問題 > php配列をコレクションに

php配列をコレクションに

WBOY
リリース: 2023-05-19 15:26:38
オリジナル
597 人が閲覧しました

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 サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート