當前位置: 首頁> 最新文章列表> 與array_map() 聯合用於鍵過濾和轉換

與array_map() 聯合用於鍵過濾和轉換

M66 2025-05-15

在PHP 中, array_diff_ukey()array_map()是非常常用的數組函數,分別用於對比數組的鍵並過濾,以及對數組進行映射轉換。這篇文章將會介紹如何將這兩個函數聯合使用,實現數組鍵的過濾與轉換。

array_diff_ukey()函數

array_diff_ukey()用於比較兩個或多個數組的鍵,並返回一個包含鍵不同的元素的數組。這個函數的語法如下:

 array_diff_ukey(array $array1, array $array2, callable $key_compare_func): array
  • $array1$array2是要比較的兩個數組。

  • $key_compare_func是一個回調函數,用來對比兩個數組中的鍵。

這個函數通過回調函數來決定如何比較鍵,如果回調函數返回0,表示鍵相同;返回負值,表示$array1中的鍵小於$array2中的鍵;返回正值,表示$array1中的鍵大於$array2中的鍵。

array_map()函數

array_map()用於對數組的每個元素應用回調函數,並返回一個新數組。其語法如下:

 array_map(callable $callback, array $array): array
  • $callback是應用於每個元素的回調函數。

  • $array是要映射的數組。

結合使用array_diff_ukey()array_map()

我們可以利用array_diff_ukey()進行鍵的過濾,再通過array_map()對數組的值進行轉換。下面是一個實際示例,演示如何用這兩個函數聯合使用,進行鍵的過濾和轉換。

 <?php
// 原始數組
$array1 = [
    'a' => 1,
    'b' => 2,
    'c' => 3,
    'd' => 4
];

// 比較數組,假設我們想保留 'a' 和 'c' 這兩個鍵
$array2 = [
    'a' => 10,
    'c' => 20
];

// 使用 array_diff_ukey 過濾掉沒有在 $array2 中存在的鍵
$filteredArray = array_diff_ukey($array1, $array2, function($key1, $key2) {
    return $key1 <=> $key2; // 比較鍵的大小
});

// 使用 array_map 對過濾後的數組進行值的轉換,這裡我們將值乘以 10
$transformedArray = array_map(function($value) {
    return $value * 10;
}, $filteredArray);

// 輸出結果
print_r($transformedArray);
?>

代碼說明

  1. 我們首先定義了一個原始數組$array1和一個用於比較的數組$array2

  2. 通過array_diff_ukey()函數,我們比較$array1$array2的鍵,過濾掉$array1中那些不在$array2中的鍵。在這個例子中,過濾後的數組$filteredArray會包含鍵'a''c'對應的元素。

  3. 然後,我們使用array_map()$filteredArray數組的值進行轉換。在此例中,我們將值乘以10,生成新的數組$transformedArray

  4. 最後,我們輸出轉換後的數組。

結論

通過array_diff_ukey()array_map()的聯合使用,我們可以實現對數組鍵的過濾,並對其值進行轉換。這樣的組合能夠靈活地處理複雜的數據操作,特別是在需要同時考慮數組鍵和值時。