'(', ']' => '[', '>' => '<', '}' => '{', ]; $values = [ '(' => 1, '[' => 2, '{' => 3, '<' => 4, ]; $scores = []; foreach ($input as $line) { $tmpBuffer = []; foreach ($line as $charPos => $char) { if (in_array($char, array_values($chunkPairs))) { $tmpBuffer[] = $char; } if (in_array($char, array_keys($chunkPairs))) { $lastBufferItem = array_pop($tmpBuffer); if ($chunkPairs[$char] !== $lastBufferItem) { continue 2; } } } $score = 0; foreach (array_reverse($tmpBuffer) as $bufferChar) { $score *= 5; $score += $values[$bufferChar]; } $scores[] = $score; } sort($scores); print_r($scores); print_r($scores[floor(count($scores) / 2)]); //1118645287