$split[0], 'path' => explode('/', $split[1])[5]]; }, lines(trim(file_get_contents(glob(PATH_TO_GROOVENET . '/songs.*.txt')[0]))) ); $d = array_combine(array_column($c, 'hash'), array_column($c, 'path')); $camFaves = lines(trim(file_get_contents(PATH_TO_GROOVENET . '/cam.favourites.txt'))); $jayceFaves = lines(trim(file_get_contents(PATH_TO_GROOVENET . '/jayce.favourites.txt'))); $allFaves = array_merge($camFaves, $jayceFaves); $hashMap = unserialize(file_get_contents(PATH_TO_HASHMAP)); $camScores = array_reduce( lines(trim(file_get_contents(PATH_TO_GROOVENET . '/cam.scores.txt'))), function($c, $v) use ($d) { $split = explode(':', $v); return array_merge($c, isset($split[2]) ? [implode(":", [$split[0], $split[1], $split[2]]) => $split[3]] : []); }, [] ); $jayceScores = array_reduce( lines(trim(file_get_contents(PATH_TO_GROOVENET . '/jayce.scores.txt'))), function($c, $v) use ($d) { $split = explode(':', $v); return array_merge($c, isset($split[2]) ? [implode(":", [$split[0], $split[1], $split[2]]) => $split[3]] : []); }, [] ); $everything = array_reduce( $allFaves, function($c, $fave) use ($camScores, $jayceScores) { $camCandidates = array_filter( $camScores, function($key) use ($fave) { return strpos($key, $fave) !== false; }, ARRAY_FILTER_USE_KEY ); $jayceCandidates = array_filter( $jayceScores, function($key) use ($fave) { return strpos($key, $fave) !== false; }, ARRAY_FILTER_USE_KEY ); $conflicts = array_intersect(array_keys($camCandidates), array_keys($jayceCandidates)); $nonConflicts = array_merge( array_diff(array_keys($camCandidates), $conflicts), array_diff(array_keys($jayceCandidates), $conflicts) ); $soFar = array_map(function($nonConflict) use ($jayceCandidates, $camCandidates){ $e = explode(':', $nonConflict); return isset($jayceCandidates[$nonConflict]) ? ['hash' => $e[0], 'diff' => $e[1], 'who' => 'JCE', 'score' => $jayceCandidates[$nonConflict]] : ['hash' => $e[0], 'diff' => $e[1], 'who' => 'CAM', 'score' => $camCandidates[$nonConflict]]; }, $nonConflicts); if ($conflicts = array_intersect(array_keys($camCandidates), array_keys($jayceCandidates))) { $resolvedConflicts = array_map(function($conflict) use ($camCandidates, $jayceCandidates) { $e = explode(':', $conflict); return $camCandidates[$conflict] > $jayceCandidates[$conflict] ? ['hash' => $e[0], 'diff' => $e[1], 'who' => 'JCE', 'score' => $jayceCandidates[$conflict]] : ['hash' => $e[0], 'diff' => $e[1], 'who' => 'CAM', 'score' => $camCandidates[$conflict]]; //['who' => 'cam', 'key' => $conflict] : ['who' => 'jayce', 'key' => $conflict]; }, $conflicts); } $ret = array_merge($soFar, $resolvedConflicts ?? []); // echo '
';
        // echo "ret is";
        // print_r($ret);
        // echo '
'; if ($ret) { return array_merge($c, $ret); } else { return array_merge($c, [['hash' => $fave, 'diff' => 'NONE', 'who' => 'NOONE', 'score' => 'NONE']]); } }, [] ); $camsFolder = array_filter(array_map( function($row) use ($camFaves, $hashMap) { if (in_array($row['hash'], $camFaves)) { return [ explode('/', $hashMap[$row['hash']])[1], $row['diff'], $row['who'], $row['score'] ]; } }, $everything )); $jaycesFolder = array_filter(array_map( function($row) use ($jayceFaves, $hashMap) { if (in_array($row['hash'], $jayceFaves)) { return [ explode('/', $hashMap[$row['hash']])[1], $row['diff'], $row['who'], $row['score'] ]; } }, $everything )); usort($camsFolder, function($a, $b) { return $a[0] <=> $b[0];}); usort($jaycesFolder, function($a, $b) { return $a[0] <=> $b[0];}); return ['cam' => $camsFolder, 'jayce' => $jaycesFolder];