ホームページ  >  記事  >  バックエンド開発  >  PHP は配列をシャッフルし、キー名を保持します

PHP は配列をシャッフルし、キー名を保持します

王林
王林転載
2024-03-21 13:46:291005ブラウズ

PHP エディタ Xinyi では、配列をシャッフルしてキー名を保持するという興味深い配列操作方法を紹介します。 PHP では、shuffle 関数を使用して配列要素のランダムな配置を簡単に実現できますが、インデックスは再割り当てされます。元のキー名を保持したい場合は、まず array_keys 関数を使用してキー名の配列を取得し、それを値の配列と一緒にスクランブルし、最後に array_combine 関数を使用して新しい配列に再結合します。このようにして、キー名を保持したまま配列要素をランダムに配置することができます。

PHP は配列をシャッフルし、キー名を保持します

php では、shuffle() 関数を使用して配列の順序をシャッフルしますが、キー名は保持されません。キー名を保持するには、次の方法を使用できます:

方法 1: array_rand() を使用する

$array = ["a" => 1、"b" => 2、"c" => 3]; $keys = array_rand($array); $shuffled_array = []; foreach ($keys として $key) { $shuffled_array[$key] = $array[$key]; }

方法 2: mt_rand() を使用する

$array = ["a" => 1、"b" => 2、"c" => 3]; $keys = array_keys($array); シャッフル($keys); $shuffled_array = []; foreach ($keys として $key) { $shuffled_array[$key] = $array[$key]; }

方法 3: サードパーティ ライブラリを使用する

ArrayLib

などのサードパーティ ライブラリは、配列をシャッフルしてキー名を保持するためのより便利な方法を提供します。 ArrayLibArrays を使用します。 $array = ["a" => 1、"b" => 2、"c" => 3]; $shuffled_array = 配列::shuffle($array);

パフォーマンスの比較

これら 3 つの方法のパフォーマンスには違いがあります:

array_rand()
    小さな配列の場合は最高のパフォーマンスを発揮しますが、大きな配列の場合は効率が低下します。
  • mt_rand()
  • すべての配列サイズで良好にパフォーマンスします。
  • サードパーティのライブラリは通常、ネイティブの PHP 関数よりも優れたパフォーマンスを発揮します。
  • 使用シーン

配列を中断してキー名を保持することは、次のシナリオで役立ちます:

各要素のキーにアクセスする必要がある一方で、配列内の要素の順序を変更する必要がある場合。

    ランダムなプレイリストまたはその他の順序付けられた
  • item
  • リストを生成する必要がある場合。
  • 配列内のデータをランダムにサンプリングする必要がある場合。
  • ######予防######
array_rand()

mt_rand() は値ではなくキーを返します。値を取得するには

$array[$key]
    を使用する必要があります。
  • サードパーティのライブラリは、使用する前にインストールする必要がある場合があります。 元の配列が変更されないように、シャッフルする前に必ず配列をコピーしてください。

以上がPHP は配列をシャッフルし、キー名を保持しますの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はlsjlt.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。