などの配列関数内の匿名関数を活用して、カスタマイズされたロジックを使用して重複排除を実現できます。 たとえば、連想配列の配列内の特定のキーに基づいて重複排除する必要がある場合、単純なarray_unique()
は十分ではありません。 匿名関数は、そのようなシナリオを処理する柔軟性を提供します。 方法は次のとおりです。array_filter()
array_unique()
$array = [ ['id' => 1, 'name' => 'apple'], ['id' => 2, 'name' => 'banana'], ['id' => 1, 'name' => 'apple'], ['id' => 3, 'name' => 'orange'] ]; $uniqueArray = array_unique($array, SORT_REGULAR); //This won't work as expected $uniqueArray = array_reduce($array, function ($carry, $item) { $key = $item['id']; //Deduplication based on 'id' if (!isset($carry[$key])) { $carry[$key] = $item; } return $carry; }, []); $uniqueArray = array_values($uniqueArray); //Convert back to indexed array print_r($uniqueArray);
array_reduce
効率的なPHPアレイ重複排除のために匿名関数を使用できますか? ただし、効率は実装と配列のサイズに大きく依存しています。 価値に基づいた単純な重複排除の場合、$carry
は一般により効率的です。 大規模な配列内の各要素の匿名関数を呼び出すオーバーヘッドは、顕著になる可能性があります。array_values
array_unique()
:単純な値ベースの重複排除の場合、array_unique()
は一般的に最速のオプションです。この特定のタスクに対して最適化されています。array_filter()
またはarray_reduce()
::これらのメソッドは柔軟性を提供しますが、各要素の関数呼び出しのオーバーヘッドを導入します。 このオーバーヘッドは、大きな配列の場合に重要です。array_reduce
よりも速くなります。 このアプローチでは、array_reduce
またはarray_filter
。 配列が既にソートされている場合、特定のアルゴリズムはそれを利用して効率を向上させることができます。のような組み込み関数によって直接サポートされていないカスタム重複排除ロジックを定義できます。 たとえば、array_unique()
連想配列の特定のキーに基づく重複排除:最初の例に示すように、匿名関数はこれに理想的です。プロパティ)。。 重複排除のニーズが単純な場合、array_unique()
のような組み込み関数は、一般的にそれらの効率に適しています。 匿名関数は、非自明の重複排除シナリオを処理するためにカスタムロジックの力が必要な場合に輝きます。 特定のユースケースのパフォーマンスとコードの読みやすさの最良のバランスを決定するために、常にさまざまなアプローチをベンチマークしてください。
以上が匿名関数を使用して、PHPアレイ重複排除を実装できますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。