2014-08-31 31 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 
    } 
} 
相关问题