Код, приведенный ниже, - это прочитать файл csv и получить значения в полях $ time, $ sip, $ dip и $ data. Мне нужно получить,
Ниже приведен код для общей суммы. Но я не могу найти глоток и окунуться отдельно. Мне нужно найти глоток и окунуться отдельно. Также первый раз печать.
$lines =file('/ghgj.csv');
$records=array();
$i=1;
foreach($lines as $line)
{
list($time,$sip,$dip,$data)= explode(',',$line);
if(substr($sip, 0, 3 )=="10.")
{
if(key_exists($sip, $records))
{
$records[$sip] += $data;
}
else
{
$records[$sip] = $data;
}
}
else if(substr($dip, 0, 3 )=="10." )
{
if(key_exists($dip, $records))
{
$records[$dip] += $data;
}
else
{
$records[$dip] = $data;
}
}
else
{
continue;
}
$i++;
}
}
Пример файла csv приведен ниже:
2014-10-31 23:34:06,10.101.11.122,54.252.136.82,2047
2014-10-31 23:34:08,31.13.70.81,10.101.84.6,49580
2014-10-31 23:34:15,10.101.11.122,54.252.136.82,20
2014-10-31 23:34:09,54.252.136.82,10.101.11.122,20
2014-10-31 23:34:12,10.101.11.13,10.101.11.122,20
Например: вывод моего кода:
10.101.11.122(sip or dip),2087
10.101.84.6,49580
10.101.11.13,20
Например: Результат должен выглядеть следующим образом:
2014-10-31 23:34:06(timestamp),10.101.11.122(common sip or dip),2067(sum of sip),20(sum of dip)
2014-10-31 23:34:08,10.101.84.6,0,49580
2014-10-31 23:34:06,10.101.11.13,20,0
Спасибо!!
Посмотрите, работает ли это для вас. Как писал @jerdiggity, вы также можете использовать fgetcsv(), но в вашем случае (без кавычек и, в частности, никаких котировок или новых строк в ваших CSV-данных), это необязательно.
$lines =file('/ghgj.csv');
$records=array();
$i=1;
foreach($lines as $line)
{
list($time,$sip,$dip,$data)= explode(',',$line);
if(substr($sip, 0, 3 )=="10.")
{
if (!key_exists($sip, $records))
{
$records[$sip] = array(
'timestamp' => $time,
'sip' => 0,
'dip' => 0
);
}
$records[$sip]['sip'] += $data;
}
else if(substr($dip, 0, 3 )=="10." )
{
if (!key_exists($dip, $records))
{
$records[$dip] = array(
'timestamp' => $time,
'sip' => 0,
'dip' => 0
);
}
$records[$dip]['dip'] += $data;
}
else
{
continue;
}
$i++;
}