PHP 配列の値とキーの交換: 実装とパフォーマンスの比較

WBOY
リリース: 2024-05-04 11:12:01
オリジナル
1116 人が閲覧しました

PHP では、配列のキーと値は次のメソッドを通じて交換できます: array_flip() 関数: 単純な構文、キーと値の直接交換、時間計算量 O(n)。カスタム機能: 柔軟性があり、ニーズに応じてカスタマイズできますが、時間の計算量も O(n) です。シフト演算子: PHP の知識が必要ですが、場合によってはより効率的ですが、所要時間は O(n) です。

PHP 数组值与键互换:实现与性能比较

PHP 配列の値とキーの交換: 実装とパフォーマンスの比較

PHP では、配列のキーと値を交換する必要があることがよくあります。処理。これを行うには複数の方法があり、それぞれに長所と短所があります。

方法 1: array\_flip() 関数

array_flip() この関数は、配列値を交換するために直接使用される PHP によって提供される組み込み関数です。そして鍵。使い方は非常に簡単で、元の配列をパラメータとして渡すだけです:

$originalArray = [
    'name' => 'John Doe',
    'age' => 30,
];

$flippedArray = array_flip($originalArray);

print_r($flippedArray);
ログイン後にコピー

出力:

Array
(
    [John Doe] => name
    [30] => age
)
ログイン後にコピー

方法 2: カスタム関数

カスタム関数を定義することもできます。配列の値とキーを交換するには:

function flipArray($array) {
    $flippedArray = [];
    foreach ($array as $key => $value) {
        $flippedArray[$value] = $key;
    }
    return $flippedArray;
}
ログイン後にコピー

このカスタム関数は array_flip() 関数と同様に機能しますが、柔軟性が高くなります。たとえば、特殊なケースを処理するロジックを追加したり、必要に応じて出力形式を変更したりできます。

方法 3: 置換演算子

置換演算子 (=>) を使用して、配列のキーと値を交換することもできます。このアプローチには、一定レベルの PHP の知識が必要ですが、場合によっては他のアプローチよりも効率的である可能性があります。

$originalArray = [
    'name' => 'John Doe',
    'age' => 30,
];

$flippedArray = [];
foreach ($originalArray as $key => $value) {
    $flippedArray[$value] = $key;
}
ログイン後にコピー

実用的なケース

次の配列があるとします。製品情報。製品名に基づいて価格を取得する必要があります。値とキーの交換を使用して配列をすばやく変換し、必要な価格データを簡単に見つけることができます。

$products = [
    'Apple' => 10,
    'Orange' => 5,
];

// 使用 array_flip() 互换键和值
$flippedProducts = array_flip($products);

// 根据产品名称获取价格
$price = $flippedProducts['Orange'];
ログイン後にコピー

上記の例では、$price に製品 Orange# # が含まれるようになります。 # 元の配列全体を走査せずに価格を見つけます。

パフォーマンスの比較

さまざまな方法を使用して配列を交換した場合のパフォーマンスの簡単な比較を次に示します:

メソッド時間計算量##array_flip()カスタム関数シフト演算子メソッドはすべて配列全体を走査する必要があるため、パフォーマンスの複雑さはすべてのメソッドで同じであることに注意してください。したがって、どの方法を選択するかは、特定の使用例と開発者の個人的な好みによって異なります。
O(n)
O(n)
O(n)

以上がPHP 配列の値とキーの交換: 実装とパフォーマンスの比較の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート