Parsing an apache logfile

I am trying to parse an apache logfile to count how many unique downloads I have of certain files.
I have the lines parsed and read them one by one and and adds the line if it does not already exists in an array.

if(stristr($parsed_line['path'], '.rar'))
{
   $element = $parsed_line['ip'] . " " .$parsed_line['date'] . " " . $parsed_line['path'];
			
   if(stristr($parsed_line['path'], 'somefile1.rar'))
      if(Add($element, $arr1))
      {
         $arr1[count($arr1)] = $element;
      }
   if(stristr($parsed_line['path'], 'somefile2.rar'))
      if(Add($element, $arr2))
      {
         $arr2[count($arr2)] = $element;
      }			
}

I test the lines with:

function Add($element, $arr)
{
   foreach($arr as $line)
   {
      if($line == $element)
      return false;
   }
   return true;
}

And print the result with:

echo "Somefile1: " . count($arr1);
echo "<br>";
echo "Somefile2: " . count($arr2);

Now, this works but there must be a better way to do it.
The way I’m doing it now results in that I have to create one array for each file I’m looking for and add a codeblock to add that specific file.
I’m looking for a way to place all valid lines in one array and count them based on filename. This way I don’t have to update the php-code if I add a new file to download.

Sponsor our Newsletter | Privacy Policy | Terms of Service