PHP 陣列鍵值互換的最佳方案:使用內建的 array_flip() 函數,時間複雜度為 O(n)。對於較大的數組,array_flip() 的效能優勢更為明顯。實戰案例:可使用 array_flip() 將購物車中商品名稱陣列轉換為商品數量陣列。
在 PHP 中,陣列是一個有用的資料結構。有時,需要互換數組的鍵和值,從而得到一個新的數組。本文將比較三種常見的方法,並討論它們的性能表現和最佳實踐。
方法一:使用array_flip()
函數
$input = ['a' => 1, 'b' => 2, 'c' => 3]; $output = array_flip($input);
方法二:使用array_combine()
函數
$keys = array_keys($input); $values = array_values($input); $output = array_combine($values, $keys);
方法三:使用自訂循環
$output = []; foreach ($input as $key => $value) { $output[$value] = $key; }
效能比較
##使用array_flip( ) 函數通常是最快的,因為它是內建函數,並且經過了高度最佳化。
array_combine() 函數的速度略慢,因為需要執行兩個額外的函數呼叫(
array_keys() 和
array_values())。自訂循環是最慢的,因為它需要手動遍歷整個陣列。
時間複雜度 | |
---|---|
O(n) | |
O(n * log( n)) | |
O(n^2) |
在大多數情況下,
建議使用array_flip() 函數進行鍵值互換。對於較小的數組,效能差異可以忽略不計。但對於較大的數組,
array_flip() 函數的優勢就會顯現出來。
假設我們有一個字串數組,表示購物車中的商品名稱。要建立另一個數組,其中鍵是商品名稱,而值是商品數量,可以使用
array_flip() 函數:<pre class='brush:php;toolbar:false;'>$cart = ['Apple', 'Banana', 'Orange', 'Apple', 'Banana'];
// 创建商品数量数组
$counts = array_flip($cart);</pre>
最終得到的
數組將如下所示:<pre class='brush:php;toolbar:false;'>Array
(
[Apple] => 2
[Banana] => 2
[Orange] => 1
)</pre>
以上是PHP 陣列鍵值互換:效能比較及最優方案詳解的詳細內容。更多資訊請關注PHP中文網其他相關文章!