如何利用php陣列對百萬資料進行排重

2021-05-22 22:01:02 字數 1512 閱讀 9567

文章**中國站長站:http://www.chinaz.com/program/php/060311m212010.html

在平時的工作中,經常接到要對**的會員進行站內信、手機簡訊、email進行**資訊的通知,使用者列表一般由別的同事提供,當中難免會有重複,為了避免重**送,所以我在進行傳送資訊前要對他們提供的使用者列表進行排重,下面我以uid列表來講講我是如何利用php陣列進行排重的。

假如得到乙個uid列表,數量在百萬行以上,格式如下:

其實利用php陣列的特性,很好進行排重,我們先來看一下php陣列的定義:php 中的陣列實際上是乙個有序對映。對映是一種把 values 關聯到 keys 的型別。此型別在很多方面做了優化,因此可以把它當成真正的陣列,或列表(向量),雜湊表(是對映的一種實現),字典,集合,棧,佇列以及更多可能性。陣列元素的值也可以是另乙個陣列。樹形結構和多維陣列也是允許的。

在php的陣列中,鍵(keys)也稱為索引,具有唯一性,我們正可以利用這一特性進行排重,示例**如下:

<?php

//定義乙個陣列,用於存放排重後的結果

$result = array();

//讀取uid列表檔案

$fp = fopen('test.txt', 'r');

while(!feof($fp))

//以uid為key去看該值是否存在

if(empty($result[$uid]))

}fclose($fp);

//將結果儲存到檔案

$content = '';

foreach($result as $k => $v)

$fp = fopen('result.txt', 'w');

fwrite($fp, $content);

fclose($fp);

?>

20多行**,就可以對百萬以上的資料進行排重,效率也不錯,非常實用。手機號、email,也可以採用這種方式進行排重。

<?php

//定義陣列,用於存放排重後的結果

$result = array();

//讀取第乙個uid列表檔案,放入$result_1

$fp = fopen('test_1.txt', 'r');

while(!feof($fp))

//以uid為key寫入$result,如有重複就會覆蓋

$result[$uid] = 1;

}fclose($fp);

//讀取第二個uid列表檔案,並進行排重操作

$fp = fopen('test_2.txt', 'r');

while(!feof($fp))

//以uid為key去看該值是否存在

if(empty($result[$uid]))

}fclose($fp);

//$result裡儲存的就排重以後的結果,可以輸出到檔案,**省略

?>

仔細想想,不難發現,利用陣列的這一特性還可以解決我們工作中的更多問題。

如何利用jdbc快速插入百萬條資料

當須要向資料庫插入百萬條資料時,利用hibernate,mybatis等持久層框架時耗時較久,此時使用jdbc插入效率會更高。此種場景特別適用於讀取檔案匯入到資料庫。可以利用批處理來加快jdbc的插入效率。string sql insert into person id,name values co...

如何利用php讀取txt檔案再將資料插入到資料庫?

今天測試乙個功能,需要往資料庫中插入一些原始資料,pm給了乙個txt檔案,如何快速的將這個txt檔案的內容拆分為所要的陣列,然後再插入到資料庫中?serial number.txt的示例內容 serial number.txt dm00001a11 0116,sn00002a11 0116,ab00...

銀行金融領域,如何利用資料探勘對客戶進行深入分析?

首先看一下資料探勘在客戶分析中的應用,資料探勘主要應用於兩大領域 客戶智慧型和風險管理 客戶智慧型分為資料層 挖掘層和營銷層,資料探勘屬於中間這一層,是服務支撐層,為營銷提供支援。資料探勘傳統的一些領域,包括客戶細分 營銷 產品關聯 實時分析 客戶提公升 價值分析,以及現在隨著大資料技術的興起,我們...