PHP開発では、多くの場合、配列を操作する必要があります。一般的な要件の1つは、配列の要素順序を破壊し、元のキー名を保持することです。 PHPのShuffle()関数は配列の順序を破壊する可能性がありますが、キー名は失われます。キー名を保持するために、他のいくつかの戦略を採用できます。
まず、 array_rand()関数を使用して、配列内のキー名をランダムに選択し、これらのキー名を保持することにより、縮小された配列を再生できます。
$array = ["a" => 1, "b" => 2, "c" => 3];
$keys = array_rand($array, count($array));
$shuffled_array = [];
foreach ($keys as $key) {
$shuffled_array[$key] = $array[$key];
}
別の一般的な方法は、あらゆる種類の配列でより良いパフォーマンスを発揮するMT_RAND()関数を使用することです。 array_keys()を介して配列のキー名を取得し、 shuffle()を使用してこれらのキー名を破壊し、破壊されたキー名に基づいて新しい配列を生成できます。
$array = ["a" => 1, "b" => 2, "c" => 3];
$keys = array_keys($array);
shuffle($keys);
$shuffled_array = [];
foreach ($keys as $key) {
$shuffled_array[$key] = $array[$key];
}
既製のソリューションを使用する場合は、 Arraylibなどのサードパーティライブラリを使用することを検討してください。これらのライブラリは通常、アレイを操作するためのより簡潔で効率的な方法を提供します。
use ArrayLibArrays;
$array = ["a" => 1, "b" => 2, "c" => 3];
$shuffled_array = Arrays::shuffle($array);
3つの方法のパフォーマンスは、さまざまなサイズの配列に対して異なります。
次のシナリオでは、配列を破壊してキー名を保持することは非常に便利です。
要約すると、PHPは配列を破壊してキー名を保持するためのいくつかの方法を提供し、開発者は実際のニーズに応じて最も適切な方法を選択できます。