【问题标题】:Array sort by compare to string数组按字符串比较排序
【发布时间】:2013-06-06 07:19:59
【问题描述】:

是否可以通过将所有值与所选字符串进行比较来对数组进行排序?

我正在尝试对一些自动完成结果进行排序,以便将"like%" 排在"%like%" 之前。

【问题讨论】:

  • 您是否使用 UNION 尝试过两种不同的查询?
  • 我对其他字段使用相同的查询
  • @Rastaking,您能否提供一些示例输入/输出?
  • 我的意思是做(SELECT * FROM table WHERE field LIKE 'test%') UNION ALL (SELECT * FROM table WHERE field LIKE '%test%' WHERE field NOT IN (SELECT field FROM table WHERE field LIKE 'test%'))

标签: php sorting autocomplete


【解决方案1】:

您可以将 usort 与闭包和类似文本一起使用。

$word = "targetword";
usort($matches, function ($a, $b) use ($word) {
     return similar_text($word,$a) - similar_text($word, $b);
});

【讨论】:

  • 我没有找到如何添加 $word 变量 :) !谢谢
【解决方案2】:

有一个函数叫做similar_text(),它返回一个整数来描述两个字符串的相似度。您可以轻松地创建一个以该相似度值作为索引的引用数组,并将该数组交给ksort()

【讨论】:

    猜你喜欢
    • 2021-07-07
    • 2015-04-03
    • 2013-12-25
    • 2012-09-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多