php добавляет новые поля в массив и отображает его

0

Код, приведенный ниже, - это прочитать файл csv и получить значения в полях $ time, $ sip, $ dip и $ data. Мне нужно получить,

  1. first_time_stamp
  2. SIP/DIP
  3. sum_of_all_values_at_SIP
  4. sum_of_all_values_at_DIP

Ниже приведен код для общей суммы. Но я не могу найти глоток и окунуться отдельно. Мне нужно найти глоток и окунуться отдельно. Также первый раз печать.

    $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

Спасибо!!

Теги:
csv
arrays
multidimensional-array

1 ответ

1
Лучший ответ

Посмотрите, работает ли это для вас. Как писал @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++;  
}

Ещё вопросы

Сообщество Overcoder
Наверх
Меню