ホームページ >バックエンド開発 >PHPチュートリアル >PHP 配列のキーと値の交換: どのソリューションが最も効率的ですか?

PHP 配列のキーと値の交換: どのソリューションが最も効率的ですか?

WBOY
WBOYオリジナル
2024-05-02 21:39:021011ブラウズ

PHP 配列のキーと値の交換に最適なソリューションは array_flip() です。これは最も効率的で、一時変数の作成が必要ないためです。他のソリューションは、アレイのタイプと要件によっては効率が低くなります。

PHP 数组键值互换:哪种方案效率最高?

PHP 配列のキーと値の交換: 最も効率的なソリューションはどれですか。

PHP では、キーを交換する必要があります。配列の値ペア スワップする場合、効率が異なるいくつかの方法から選択できます。以下に、これらの方法の分析と、さまざまなシナリオのベスト プラクティスの推奨事項を示します。

オプション 1: array_flip()

<?php
$array = ['a' => 1, 'b' => 2, 'c' => 3];
$flippedArray = array_flip($array);

print_r($flippedArray);
// 输出:
// [1 => 'a', 2 => 'b', 3 => 'c']

オプション 2: array_combine()

<?php
$keys = ['a', 'b', 'c'];
$values = [1, 2, 3];

$flippedArray = array_combine($values, $keys);

print_r($flippedArray);
// 输出:
// [1 => 'a', 2 => 'b', 3 => 'c']

オプション 3:関数定義

<?php
function flipArray($array) {
  $flippedArray = [];

  foreach ($array as $key => $value) {
    $flippedArray[$value] = $key;
  }

  return $flippedArray;
}

$array = ['a' => 1, 'b' => 2, 'c' => 3];
$flippedArray = flipArray($array);

print_r($flippedArray);
// 输出:
// [1 => 'a', 2 => 'b', 3 => 'c']

オプション 4: 分解

<?php
$array = ['a' => 1, 'b' => 2, 'c' => 3];

[$flippedArray] = [array_flip($array)];

print_r($flippedArray);
// 输出:
// [1 => 'a', 2 => 'b', 3 => 'c']

実用的なケース

次の内容を含むプログラムがあるとします。学生名と成績の配列:

<?php
$students = [
  'Alice' => 90,
  'Bob' => 85,
  'Carol' => 95
];

学生名を成績別に並べ替えるには、次のコードを使用できます:

<?php
// 键值互换数组
$flippedStudents = array_flip($students);

// 键(分数)排序
ksort($flippedStudents);

// 获取排序的键(学生姓名)
$sortedNames = array_keys($flippedStudents);

print_r($sortedNames);
// 输出:
// [Bob, Alice, Carol]

効率分析

##オプション 1: array_flip() は PHP の組み込み関数であり、一時変数を作成する必要がないため、最も効率的です。

オプション 2: array_combine() は、結合するために 2 つの別々の配列が必要なため、array_flip() よりも効率が低くなります。

オプション 3: カスタム関数の効率は、配列を走査するためにループを使用する必要があるため、array_flip() よりも低くなります。

オプション 4: 分割は array_flip() と同じくらい効率的ですが、複合配列を反転する必要がある場合 (つまり、値として配列が含まれている場合) にのみ機能します。 )。

したがって、ほとんどのユースケースでは、

array_flip() が配列のキーと値を交換する最も効率的なソリューションになります。

以上がPHP 配列のキーと値の交換: どのソリューションが最も効率的ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。