[英]PHP find similar array keys and sum of the values
我有一個csv文件,它有四個字段,分別是時間,sip,dip和數據。
我需要找到所有以“ 10”開頭的小口。 如果sip相同,則添加所有數據字段並用sip顯示值。
我嘗試了下面的代碼。 但是,如何搜索數組以檢查sip是否相同,如果相同,則添加所有數據字段。
$lines =file('/files/cjsv.csv');
$records=array();
foreach($lines as $data)
{
list($time,$sip,$dip,$data)= explode(',',$data);
if(substr($sip, 0, 3 )=="10.")
{
echo $sip."=".$data."<br/>";
$records[$sip]=$data;
}
}
var_dump($records);
CSV文件示例:
2014-10-31 23:34:24,17.172.208.49,10.101.224.170,500
2014-10-31 23:34:16,178.206.115.117,10.101.224.170,400
2014-10-31 23:34:23,10.101.16.218,17.167.138.38,200
2014-10-31 23:34:23,10.101.16.218,17.167.138.38,100
2014-10-31 23:34:24,54.249.250.113,10.101.13.22,80
2014-10-31 23:34:24,17.167.140.109,10.101.1.1,80
2014-10-31 23:34:24,134.170.188.84,10.101.1.1,80
2014-10-31 23:34:23,10.101.16.219,17.167.138.38,50
預期輸出為:
10.101.16.218 = 300(200 + 100)
10.101.16.219 = 50
就像是:
if(key_exists($sip, $records){
$records[$sip] += $data;
} else {
$records[$sip] = $data;
}
我測試了這段代碼,並輸出了想要的結果...
$lines =file('/files/cjsv.csv');
$records=array();
foreach($lines as $data)
{
list($time,$sip,$dip,$data)= explode(',',$data);
if(substr($sip, 0, 3 )=="10.")
{
//echo $sip."=".$data."<br/>";
$records[$sip] += $data; // changed this
}
}
var_dump($records);
輸出:
array(2) {
["10.101.16.218"]=>
int(300)
["10.101.16.219"]=>
int(50)
}
我從您的解決方案中僅更改了一個命令"$records[$sip]=$data;"
為"$records[$sip] += $data;"
... "="
將替換您先前記錄的值,而"+="
將增加您想要的值...
隨時詢問您是否還有其他問題...
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.