【问题标题】:similar_text not giving expected result类似的文本没有给出预期的结果
【发布时间】:2016-05-31 11:16:55
【问题描述】:

我只是想知道,这里发生了什么。如果我使用这个:

var_dump(similar_text('abcd', 'abcdefg', $percent)); //output: int 4

没关系,abcd 在正确的位置,所以 4 是好的结果。

让我们在第一个变量的开头更改ab

var_dump(similar_text('bacd', 'abcdefg', $percent)); //output: int 3

我希望 24 但不是 3。谁能给我解释一下这是为什么?

【问题讨论】:

标签: php


【解决方案1】:

similar_text() 使用一种算法,该算法获取第二个字符串包含的第一个字符串中的第一个字母,对其进行计数,然后从第二个字符串中丢弃之前的字符。 这就是我们得到不同结果的原因。

第一个例子的迭代

  'abcd' vs 'abcdefg' - (1) // 'a' match with 'a' 
  'bcd'  vs 'bcdefg'  - (1) // 'b' match with 'b' 
  'cd'   vs 'cdefg'   - (1) // 'c' match with 'c'
  'd'    vs 'defg'    - (1) // 'd' match with 'd'
  ''     vs 'efg'     - (0) // no match
  Result = 4

第二个例子的迭代

  'bacd' vs 'abcdefg'  - (0) // b not match a
  'bacd' vs 'bcdefg'   - (1) // b match b
  'acd'  vs 'cdefg'    - (0) // a not match c
  'cd'   vs 'cdefg'    - (1) // c match c
  'd'    vs 'defg'     - (1) // d match d
  ''     vs 'efg'      - (0) // not match with any elemennt
  Result = 3

【讨论】:

  • 我要发这个帖子,我也是这么想的。
  • 我觉得是这个原因,你觉得呢?
  • 你能解释一下,为什么'cd' vs 'cdefg' - (0)在第一次迭代中是1,为什么'' vs 'efg' 第二次是1,第一次是0?为什么'bacd' vs 'abcdefg' - (1) 在第二个?
  • @lolka_bolka 你能检查一下编辑后的答案吗,如果它令人困惑,请告诉我
  • 感谢您通过示例进行详细说明。现在它不稳定,所以我接受并赞成它。
猜你喜欢
  • 2020-05-29
  • 1970-01-01
  • 2019-06-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-01-09
  • 2021-01-06
  • 2018-12-08
相关资源
最近更新 更多