2014-08-31 74 views
0

我想比較一個數組是否在腳本的開始和結束之間發生了變化。值的類型(布爾值,字符串)不會改變,只有值本身。一種方法是明顯:識別數組是否發生了變化的最快方法

if($array1 != $array2){ //we have a change } 

但我想知道如果做一個序列化()首先在兩個會更快,或者,如果有一個方法,我不知道。

+3

爲什麼你會認爲將兩個東西都轉換爲字符串並比較字符串 - 比單獨比較兩個相同類型的變量要快嗎?或者,當你更新某些東西並測試該布爾值時,聽起來像是一個logifc問題 - 爲什麼不是'$ changed = true'或'$ array1 ['updated'] = true'。 – AD7six 2014-08-31 12:03:36

+0

根據需要使用[array_diff](http://php.net/manual/en/function.array-diff.php)或array_diff_assoc。 – Debflav 2014-08-31 12:03:43

+0

@Debflav'array_diff'在這種情況下應該是矯枉過正的 - 如果你發現一個不同的值,你可以中斷檢查,所以整體執行時間應該小於檢查所有值 – kero 2014-08-31 12:06:04

回答

1

語言功能是最快的。試試這個:

class MyFastClass extends ArrayObject 
{ 
    public function append($value) 
    { 
     parent::append($value); // you can track changes here 
    } 
} 
相關問題