3, ']' => 57, '}' => 1197, '>' => 25137, ]; $corrupted = []; foreach ($lines as $line) { $chunks = []; foreach (str_split($line) as $chunk) { switch ($chunk) { case '(': $chunks[] = ')';break; case '[': $chunks[] = ']';break; case '{': $chunks[] = '}';break; case '<': $chunks[] = '>';break; default: $last_chunk = array_pop($chunks); if ($last_chunk !== $chunk) { $corrupted[] = $chunk; } } } } echo array_sum(array_map(static function ($score) use ($scores) { return $scores[$score]; }, $corrupted));