<?php
$keywordsUrlsArray = array(
0 => array
(
'url' => 'https://www.example.pl/?test=19',
'keyword' => 'test',
'score1' => 100,
'score2' => 50,
'position' => 4
),
1 => array
(
'url' => 'https://www.example.pl/?test=2',
'keyword' => 'test',
'score1' => 100,
'score2' => 50,
'position' => 1
),
2 => array
(
'url' => 'https://www.example.pl/?test=3',
'keyword' => 'test',
'score1' => 100,
'score2' => 50,
'position' => 3
),
3 => array
(
'url' => 'https://www.example.pl/other-site?test=3',
'keyword' => 'test',
'score1' => 100,
'score2' => 50,
'position' => 3
)
);
$res = array();
foreach ($keywordsUrlsArray as $urlResults) {
//remove params from url
$parsedUrl = parse_url($urlResults['url']);
$parsedUrl = $parsedUrl['scheme'] . '://' . $parsedUrl['host'] . $parsedUrl['path'];
$keyword = $urlResults['keyword'];
if (array_key_exists($parsedUrl, $res)) {
if (isset($res[$parsedUrl][$keyword])) {
$res[$parsedUrl][$keyword]['urlCount'] += 1;
$res[$parsedUrl][$keyword]['score1'] += $urlResults['score1'];
$res[$parsedUrl][$keyword]['score2'] += $urlResults['score2'];
$res[$parsedUrl][$keyword]['sumPosition'] += $urlResults['position'];
$res[$parsedUrl][$keyword]['position'] = $res[$parsedUrl][$keyword]['sumPosition'] / $res[$parsedUrl][$keyword]['urlCount'];
continue;
}
}
$res[$parsedUrl][$keyword] = $urlResults;
$res[$parsedUrl][$keyword]['url'] = $parsedUrl;
$res[$parsedUrl][$keyword]['urlCount'] = 1;
$res[$parsedUrl][$keyword]['sumPosition'] = $urlResults['position'];
}
var_dump($res);
preferences:
102.95 ms | 405 KiB | 5 Q