VersionPress\Utils\ArrayUtils::unique PHP Method

unique() public static method

Uses custom function to map the values to a comparable value. It preserves keys.
public static unique ( array $array, callable | null $fn = null ) : array
$array array
$fn callable | null
return array
    public static function unique($array, $fn = null)
    {
        $mapped = $fn ? array_map($fn, $array) : $array;
        $uniqueMapped = array_unique($mapped, SORT_REGULAR);
        return array_intersect_key($array, $uniqueMapped);
    }

Usage Example

 public function restoreAllDefinitionFilesFromHistory()
 {
     FileSystem::removeContent($this->directory);
     $definitionFilesWildcard = WP_PLUGIN_DIR . '/*/.versionpress/actions.yml';
     $modifications = $this->gitRepository->getFileModifications($definitionFilesWildcard);
     $modifications = array_filter($modifications, function ($modification) {
         return $modification['status'] !== 'D';
     });
     $lastModifications = ArrayUtils::unique($modifications, function ($modification) {
         return $modification['path'];
     });
     foreach ($lastModifications as $modification) {
         $fileContent = $this->gitRepository->getFileInRevision($modification['path'], $modification['commit']);
         $plugin = basename(dirname(dirname($modification['path'])));
         $targetFile = $this->getDefinitionFileName($plugin);
         file_put_contents($targetFile, $fileContent);
     }
     $this->saveDefinitionForPlugin('versionpress/versionpress.php');
 }