3v4l.org

run code in 300+ PHP versions simultaneously
<?php $fonts = [ [ 'family' => 'Abril Fatface', 'weight' => 'regular', 'charset' => 'latin,latin-ext' ], [ 'family' => 'Akronim', 'weight' => 'regular', 'charset' => 'latin' ], [ 'family' => 'Akronim', 'weight' => 'regular, bold', 'charset' => 'latin' ], [ 'family' => 'Akronim', 'weight' => 'regular', 'charset' => 'latin,latin-ext' ], [ 'family' => 'Acme', 'weight' => 'regular', 'charset' => 'latin' ] ]; $result = []; foreach ($fonts as $row) { $row['weight'] = array_flip(preg_split('~, ?~', $row['weight'], 0, PREG_SPLIT_NO_EMPTY)); $row['charset'] = array_flip(preg_split('~, ?~', $row['charset'], 0, PREG_SPLIT_NO_EMPTY)); if (!isset($result[$row['family']])) { $result[$row['family']] = $row; } else { $result[$row['family']]['weight'] += $row['weight']; $result[$row['family']]['charset'] += $row['charset']; } } foreach ($result as &$row) { $row['weight'] = implode(',', array_keys($row['weight'])); $row['charset'] = implode(',', array_keys($row['charset'])); } var_export(array_values($result));

preferences:
112.23 ms | 409 KiB | 5 Q