對於我這樣的新手來講,第一選擇確定是使用PHP的自帶函數array_diff,填寫以下:面試
function contrast ($array_1, $array_2)
{
$array_3 = array_diff($array_1, $array_2);
return $array_3;
}
複製代碼
在不使用PHP自帶函數的狀況下,只能是使用循環來進行了。寫下了以下代碼:數組
function contrast ($array_1, $array_2)
{
foreach ($array_1 as $key => $item) {
if (in_array($item, $array_2)) {
unset($array_1[$key]);
}
}
return $array_1;
}
複製代碼
這樣寫完以後面試官說個人思惟邏輯仍是不夠發散,能夠寫成另外一種方式,本人感受真的是機智。很少說貼代碼:bash
function contrast ($array_1, $array_2)
{
$num_1 = 0;
$num_2 = 0;
foreach ($array_1 as $key => $item) {
$num_1 += $item;
}
foreach ($array_2 as $key => $item) {
$num_2 += $item;
}
return $num_1-$num_2;
}
複製代碼
回來後查閱各類論壇,帖子。終於找到了一種方法:(由於PHP數組的鍵是進行 HASH 組織的,查找很快;而 Value 只是由 Key 組織存放,自己沒有索引,每次查找都是遍歷。)函數
function array_diff($array_1, $array_2) {
$array_2 = array_flip($array_2);
foreach ($array_1 as $key => $item) {
if (isset($array_2[$item])) {
unset($array_1[$key]);
}
}
return $array_1;
}
複製代碼