#php
#php
Вопрос:
Предположим, у меня есть ключевое Toy car
слово и массив
$source_array = array(
'Provision for toy that is a car',
'Toy that looks like a car',
'Toy Car',
'Toy CAR'
);
Я пытался, как
foreach($source_array as $v) {
echo similar_text($key_word, $v);
}
Он возвращает большее число для более высокого соответствия. Сначала мне нужен результат в массиве с более высоким совпадением.
Комментарии:
1. Что делает функция similar_text?
2. @jerkan прочитайте руководство
Ответ №1:
Вы можете сохранить результаты в массиве, ключом которого является предложение, а значением — оценка, затем получить максимальную оценку с соответствующими значениями :
$source_array = array(
'Provision for toy that is a car',
'Toy that looks like a car',
'Toy Car',
'Toy CAR',
'Toy car' // <----- I added a "perfect" match
);
$key_word = 'Toy car';
$result = [];
foreach($source_array as $v) {
$result[$v] = similar_text($key_word, $v);
}
$highest_score = max($result); // <--------------------- Get max score
$sentences = array_keys($result, $highest_score); // <--- Get the keys corresponding to that value
var_dump($sentences);
Это выводит :
array(2) {
[0]=>
string(25) "Toy that looks like a car"
[1]=>
string(7) "Toy car"
}
Если все, что вам нужно, это сортировать результаты по наибольшему совпадению, вы можете использовать arsort()
$source_array = array(
'Provision for toy that is a car',
'Toy that looks like a car',
'Toy Car',
'Toy CAR',
'Toy car' // <----- I added a "perfect" match
);
$key_word = 'Toy car';
$result = [];
foreach($source_array as $v) {
$result[$v] = similar_text($key_word, $v);
}
arsort($result);
var_dump($result);
array(5) {
["Toy that looks like a car"]=>
int(7)
["Toy car"]=>
int(7)
["Provision for toy that is a car"]=>
int(6)
["Toy Car"]=>
int(6)
["Toy CAR"]=>
int(4)
}
Комментарии:
1. Спасибо, поскольку я уже спрашивал, нужно ли мне все совпадения, которые я могу использовать
$highest_score = krsort($result);