PHPプログラミングでは、大量のデータを処理する場合、処理を容易にするためにアレイを複数の部分に分割する必要があることがよくあります。 PHPは、配列を複数の小さなアレイチャンクに分割できる非常に実用的な関数Array_chunkを提供します。今日は、この関数を使用してデータをより適切に処理する方法について説明します。特に、データをいくつかのピースにランダムに分割して、その後の処理を容易にします。
Array_chunkは、非常にシンプルですが、PHPの非常に強力な配列操作機能です。その基本機能は、配列を複数の小さなアレイに分割することであり、各小さな配列の要素の数は指定するサイズです。関数は次のように定義されています。
array array_chunk ( array $array , int $size [, bool $preserve_keys = FALSE ] )
$配列:分割する必要がある配列。
$サイズ:各小さな配列に含まれる要素の最大数。
$ preserve_keys :元の配列のキー名を保持するかどうかにかかわらず、デフォルトはfalse 、つまり再インデックスです。
デフォルトでは、 array_chunkは順番に配列をチャンクにカットすることです。アレイ内の要素をさまざまなブロックにランダムに配布する場合は、最初に配列を台無しにしてから、 array_chunkを使用して配列を分割できます。これにより、各ブロックのデータがランダムになることが保証されます。
この要件を達成するためにarray_chunkとシャッフルを使用する方法を示す簡単な例コードを以下に示します。
<?php
// 配列を作成します
$array = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];
// 配列を破壊します,配列要素の順序がランダムであることを確認してください
shuffle($array);
// 各ブロックのサイズを設定します
$chunk_size = 3;
// 混乱した配列をいくつかのピースに分けます
$chunks = array_chunk($array, $chunk_size);
// 出力分割配列ブロック
echo '<pre>';
print_r($chunks);
echo '</pre>';
?>
この例では、最初にshuffle()関数を使用して、array $ arrayの順序をランダムに破壊し、次にArray_chunkを使用してブロックあたり最大3つの要素を含む小さな配列に分割します。出力は、次のようにランダムなチャンキングである可能性があります。
Array
(
[0] => Array
(
[0] => 7
[1] => 5
[2] => 2
)
[1] => Array
(
[0] => 1
[1] => 10
[2] => 8
)
[2] => Array
(
[0] => 9
[1] => 6
[2] => 4
)
[3] => Array
(
[0] => 3
)
)
このように、配列内の要素は複数の小さなアレイにランダムに分布しています。
負荷分散:時には、各処理ユニットのデータ量がほぼ同じであることを確認するために、データを複数の処理ユニットに割り当てる必要がある場合があります。データ項目の処理時間が比較的平均的な場合、ランダム割り当てにより、一部の処理ユニットが過負荷になるのを防ぐことができます。
データのランダム化:機械学習では、データセットをトレーニングセットとテストセットにランダムに分割する必要があることがよくあります。ランダムチャンキングにより、トレーニングセットとテストセットのデータが元の配列の順序によりバイアスされないようになり、モデルトレーニングの公平性が保証されます。
メモリフットプリントの削減:配列が非常に大きい場合、各データブロックのメモリ使用量を減らすことができます。これは、1つずつ処理または処理するのに便利です。
array_chunkおよびshuffle関数を使用することにより、アレイをランダムに複数のブロックに簡単に分割できます。このような方法は、従来のデータ処理に適しているだけでなく、負荷分散やデータのランダム化などのシナリオでも広く使用できます。
記事に関連していない部分:
PHP開発では、ランダム化データのアプリケーションシナリオは非常に広くなっています。 Array_chunkを使用して配列を分割することに加えて、 Shuffleはデータをランダムにソートするためにも使用されます。ユーザーデータの処理であろうとロードバランス、これらの基本的な配列操作手法の理解とマスタリングであろうと、より効率的に開発するのに役立ちます。
より正確な負荷分散アルゴリズムやより高度なデータセグメンテーション手法など、より複雑な機能が必要な場合は、他のPHPビルトイン関数を使用したり、より効率的なアルゴリズムを実装したりしてみてください。