3v4l.org

run code in 300+ PHP versions simultaneously
<?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