मान लीजिए मेरे पास कीवर्ड है 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);
}

यह उच्च मैच के लिए उच्च संख्या देता है। मुझे पहले उच्च मिलान वाले सरणी में परिणाम चाहिए।

php
0
Justine Chacko 7 अक्टूबर 2020, 11:56

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)
}
0
Cid 7 अक्टूबर 2020, 12:13