zoukankan      html  css  js  c++  java
  • 【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

    通过键值对互换去重

  • 相关阅读:
    史上最全Html与CSS布局技巧
    Discuz! X的CSS加载机制
    关于input框只能输入纯数字问题
    对象的数据属性
    vue中将光标定位到Input上的问题
    端口占用问题解决方案
    el-button如何消除右边计数样式
    如何改变vscode的背景颜色
    为什么——要实例化对象?
    call()&apply()
  • 原文地址:https://www.cnblogs.com/Horsonce/p/8352852.html
Copyright © 2011-2022 走看看