public static function columnSounds($array, $field, $value, $substitutions = array(), $acceptance = 0.35) { foreach ((array) $array as $key => $row) { if (isset($row[$field]) && is_string($row[$field])) { if (empty($substitutions)) { $original = $row[$field]; $string = $value; } else { $original = strval(str_replace(array_keys($substitutions), $substitutions, $row[$field])); $string = strval(str_replace(array_keys($substitutions), $substitutions, $value)); } $strlen = strlen($original) < strlen($string) ? strlen($original) : strlen($string); $acceptable = round($strlen * $acceptance); $levenshtein = SERVER::levenshtein($original, $string); if ($levenshtein <= $acceptable) { $list[$levenshtein][$key] = $key; } } } if (!empty($list)) { ksort($list); self::loopedFlatten($list, 2, $flattened); return array_combine($flattened, $flattened); } }