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