【发布时间】:2016-07-31 20:10:00
【问题描述】:
假设您有两个数据集,您需要确保它们没有改变。例如,你一只手拿着一个对象数组,另一只手拿着另一个数组。现在,您需要验证两个数组是否完全相同。
每个数组可以包含任何类型的数据:布尔、字符串、对象、数组、NULL等。
比较两个数组内容时应该完全相同。相同的数据类型和相同的顺序。
我没有使用可以比较不同类型数据的代码以及可能的递归比较来迭代数组内容,而是提出了一个解决方案,如果您能指出其中的任何缺点,我将不胜感激。PHP是语言,但我对语言中立的答案更感兴趣。
我分别对这两个数据集进行了序列化,并计算了它们的 md5 哈希值。我选择了md5,因为它无需外部扩展或库即可使用,而且运行速度非常快。我知道发生冲突的可能性,并且md5 哈希值几乎没有加密安全。
我的问题是:
- 它是一种广泛使用的方法来验证任意类型的数据。检查文件校验和是有意义的,但我没有亲自使用它来比较这样的变量。
- 我这样做主要是为了让我的代码保持简单。比较可能更快,因为只要首先发现不匹配,它就会中断比较。就我而言,数据的长度相当小。大约 5kb 作为序列化字符串。
- 还有其他我应该知道的下站点吗?
提前致谢。
【问题讨论】:
-
加星标 - 一个有趣的发现是
json_encodeseem to be much faster 比serialize -
听起来是个不错的计划,如果你能承受奇怪的失败
标签: php arrays performance comparison checksum