大規模な配列での PHP 配列の交差および和集合演算は、最適化手法によってパフォーマンスを向上させることができます。テクニックとしては、交差する場合は in_array() 関数を使用し、同じサイズの配列を比較するには array_intersect() 関数を使用し、演算子を使用して重複要素を取得するには array_unique() 関数を使用します。
PHP 配列の交差と結合に関するメモリ効率の最適化のヒント
PHP 配列の交差と結合の操作は、日常の開発でよく使用されます。 。ただし、大規模な配列の場合、これらの操作は非常に時間がかかり、大量のメモリを消費する可能性があります。パフォーマンスを最適化するために、次の手法を使用できます:
Intersection
関数を使用します。
配列 A の要素の数が配列 B よりもはるかに小さい場合、in_array() 関数を使用して、配列 A の各要素を配列 B で検索できます。
function getIntersect($arrA, $arrB) { $result = []; foreach ($arrA as $value) { if (in_array($value, $arrB)) { $result[] = $value; } } return $result; }
関数を使用します。
2 つの配列のサイズが類似している場合は、array_intersect( )### 関数 。
function getIntersect($arrA, $arrB) { return array_intersect($arrA, $arrB); }
返す必要がある場合ユニオンが繰り返される場合、
array_unique() 関数を使用して 2 つの配列をマージし、重複する要素を削除できます。
function getUnion($arrA, $arrB) { return array_unique(array_merge($arrA, $arrB)); }
一意の共用体を返す必要がない場合は、
演算子を使用できます。そして2つの配列。
function getUnion($arrA, $arrB) { return $arrA + $arrB; }
次の 2 つの大きな配列について考えてみましょう。
$arrA = range(1, 100000); $arrB = range(50001, 150000);
上記の最適化手法を使用すると、交差部分とUnion の計算:
// 交集(使用 in_array() 函数) $intersect = getIntersect($arrA, $arrB); // 并集(使用 array_unique() 函数) $union = getUnion($arrA, $arrB); printf("交集大小:%d\n", count($intersect)); printf("并集大小:%d\n", count($union));
これらの最適化手法を使用すると、大規模な配列の交差および和集合演算のパフォーマンスを大幅に向上させることができ、それによってメモリの枯渇を回避し、コードの効率を向上させることができます。
以上がPHP 配列の交差と結合に関するメモリ効率の最適化のヒントの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。