Automattic\WooCommerce\Vendor\GraphQL\Utils

Utils::suggestionListpublic staticWC 1.0

Given an invalid input string and a list of valid options, returns a filtered list of valid options sorted based on their similarity with the input.

Method of the class: Utils{}

No Hooks.

Returns

Array. string>

Usage

$result = Utils::suggestionList( $input, $options ): array;
$input(string) (required)
.
$options(array) (required)
.

Utils::suggestionList() code WC 10.8.1

public static function suggestionList(string $input, array $options): array
{
    /** @var array<string, int> $optionsByDistance */
    $optionsByDistance = [];
    $lexicalDistance = new LexicalDistance($input);
    $threshold = mb_strlen($input) * 0.4 + 1;
    foreach ($options as $option) {
        $distance = $lexicalDistance->measure($option, $threshold);

        if ($distance !== null) {
            $optionsByDistance[$option] = $distance;
        }
    }

    uksort($optionsByDistance, static function (string $a, string $b) use ($optionsByDistance) {
        $distanceDiff = $optionsByDistance[$a] - $optionsByDistance[$b];

        return $distanceDiff !== 0 ? $distanceDiff : strnatcmp($a, $b);
    });

    return array_map('strval', array_keys($optionsByDistance));
}