【PHP】array_unique与array_array_flip

工作中遇到对查找指定数组,并且数组去重功能,有接近两千万的数据量,这时很多办法已经不行了,

第一次见这么大的数据,电脑卡了一天最后将结果查找出来。

1. 直接采用file函数来操作 or file_get_content() 肯定报内存溢出
注: 由于 file函数是一次性将所有内容读入内存,而php为了防止一些写的比较糟糕的程序占用太多的内存而导致系统内存不足,使服务器出现宕机,所以默认情况下 限制只能最大使用内存16M,这是通过php.ini里的memory_limit = 16M来进行设置,这个值如果设置-1,则内存使用量不受限制。当时自己没看到这个答案,文件1G多,我就设置memory_limit为2G,现在知道了直接设置为-1。

当时由于没有设置内存最大使用,所以最后出现内存溢出:Out of memory (allocated 854589440) (tried to allocate 323 bytes)

开始直接使用fopen和file_get_content,文件太大了,这两个方法不行,只能使用读取大文件的类SplFileObject,强大的类。

1.array_unique

数组去重,数组最大为16384,第一组数据有580多万,查询到要求的数据有44条,去重数组没有在第二组处理中达到想要的效果,最后显示结果大致的意思就是超出array_unique的范围,array_unique处理的唯一数组最大长度也就是16384,所以最后只能使用array_flip函数处理。

2.array_flip

通过键值对互换去重

转载于:https://www.cnblogs.com/Horsonce/p/8352852.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值