0
我想比較一個數組是否在腳本的開始和結束之間發生了變化。值的類型(布爾值,字符串)不會改變,只有值本身。一種方法是明顯:識別數組是否發生了變化的最快方法
if($array1 != $array2){ //we have a change }
但我想知道如果做一個序列化()首先在兩個會更快,或者,如果有一個方法,我不知道。
我想比較一個數組是否在腳本的開始和結束之間發生了變化。值的類型(布爾值,字符串)不會改變,只有值本身。一種方法是明顯:識別數組是否發生了變化的最快方法
if($array1 != $array2){ //we have a change }
但我想知道如果做一個序列化()首先在兩個會更快,或者,如果有一個方法,我不知道。
語言功能是最快的。試試這個:
class MyFastClass extends ArrayObject
{
public function append($value)
{
parent::append($value); // you can track changes here
}
}
爲什麼你會認爲將兩個東西都轉換爲字符串並比較字符串 - 比單獨比較兩個相同類型的變量要快嗎?或者,當你更新某些東西並測試該布爾值時,聽起來像是一個logifc問題 - 爲什麼不是'$ changed = true'或'$ array1 ['updated'] = true'。 – AD7six 2014-08-31 12:03:36
根據需要使用[array_diff](http://php.net/manual/en/function.array-diff.php)或array_diff_assoc。 – Debflav 2014-08-31 12:03:43
@Debflav'array_diff'在這種情況下應該是矯枉過正的 - 如果你發現一個不同的值,你可以中斷檢查,所以整體執行時間應該小於檢查所有值 – kero 2014-08-31 12:06:04