關於數組array_diff(array1, array2)求差集來比較數組是否相等的問題細究

無心中發現不少朋友都喜歡使用array_diff(array1, array2)來判斷兩個數組是否相等,
我本身也偶爾會這麼使用
可是今天我在寫代碼的過程當中無心發現這麼作是不許確的。
首先咱們來看一下這個函數的釋義(PHP Manual):
對比 array1 和其餘一個或者多個數字,返回在 array1 中可是不在其餘 array 裏的值。
說實話讀起來有點拗口,有些朋友喜歡直接看代碼,
咱們經過手冊上代碼發現兩個數組作比較能夠求差集而且間接判斷相等

<?php
$array1 = array("a" => "green", "red", "blue", "red");
$array2 = array("b" => "green", "yellow", "red");
$result = array_diff($array1, $array2);
print_r($result);
?>php

這裏和咱們預期的同樣,返回的結果是Array([1] => blue)
許多朋友看到這裏就結束了,
沒有去考慮若是blue元素若是是在$array2中,二者比較會是什麼結果?
若是你用做判斷兩個數組是否相等,我告訴你這裏返回值仍然是空!
沒錯,這個函數只特麼的拿array1去和後面的作對比,返回array1中的差集,
後面的數組不是親兒子根本無論你!
相關文章
相關標籤/搜索