在PHP 中, array_diff_key()是一個非常實用的函數,它可以用來比較兩個數組的鍵名,並返回存在於第一個數組中而不存在於第二個數組中的鍵名。在某些場景下,我們不僅需要獲取過濾後的數組,還希望能夠獲取到那些被過濾掉的鍵名。本文將介紹如何實現這一功能。
array_diff_key()函數的基本用法如下:
$array1 = [
'a' => 1,
'b' => 2,
'c' => 3,
'd' => 4
];
$array2 = [
'b' => 5,
'd' => 6
];
$result = array_diff_key($array1, $array2);
print_r($result);
輸出結果:
Array
(
[a] => 1
[c] => 3
)
如上例所示, array_diff_key()會返回$array1中那些沒有出現在$array2中的鍵值對。但是,如果我們想要獲取被過濾掉的鍵名,也就是說那些存在於$array1中但沒有出現在$array2中的鍵名,我們需要做一些額外的處理。
為了獲取被過濾掉的鍵名,我們可以先使用array_diff_key()獲取結果,然後通過比較兩個數組的鍵名來找出被移除的鍵名。
$array1 = [
'a' => 1,
'b' => 2,
'c' => 3,
'd' => 4
];
$array2 = [
'b' => 5,
'd' => 6
];
// 獲取過濾後的數組
$result = array_diff_key($array1, $array2);
// 獲取被過濾掉的鍵名
$filteredKeys = array_keys($array1);
$remainingKeys = array_keys($result);
$removedKeys = array_diff($filteredKeys, $remainingKeys);
echo "被過濾掉的鍵名: ";
print_r($removedKeys);
輸出結果:
被過濾掉的鍵名: Array
(
[0] => a
[1] => c
)
通過這種方法,我們就可以打印出在使用array_diff_key()時被過濾掉的鍵名。具體做法是先獲取$array1中所有的鍵名,再通過array_diff()找出那些不在$result中的鍵名,最終得出被過濾掉的鍵名。
通過以上示例,我們可以看到如何使用array_diff_key()來比較數組的鍵名並獲取被過濾掉的鍵名。在PHP 中,這種操作非常常見,尤其是在進行數組數據清理和比較時。如果你希望保留被過濾掉的鍵名,可以參考本文的方法來實現。