0
我想建立一个php类,它应该按照与输入的搜索查询“相似性”的顺序对来自mysql数据库的结果进行排序。我正在使用php函数similar_text。如何定义我的数组按特定顺序排序的usort?
class compare {
static $_base = NULL;
static function setBase($base) {
if (!isset ($base) or !is_string($base)) {
$base = "";
}
self::$_base = strtolower($base);
}
static function cmp($a) {
if (!is_string(self::$_base)){
self::setBase();
}
similar_text(self::$_base, strtolower($a), $a_pct);
return $a_pct;
}
static function eachcmp($src, $arr)
{
$ordered = array();
foreach($arr as $key => $val)
{
$sim = cmp($val);
$ordered[]["something"] = $arr[$key]["something"];
$ordered[]["something2"] = $arr[$key]["something2"];
$ordered[]["sim"] = $sim;
}
}
}
正如你可以在函数“eachcmp”我比较基本数组中的每个值,然后所有的值写入到一个新的数组看到。现在我的问题从这里开始。我怎样才能按照$ ordered [] [“sim”]的顺序排列数组?我知道我可能需要使用usort,但我不知道哪个函数作为usort的参数。
Thx求助! phpheini
好的,谢谢!我现在创建了一个新的功能补偿。 'function comp($ a,$ b){ \t $ al = intval($ a [“sim”]); \t $ bl = intval($ a [“sim”]); \t if($ al == $ bl){ \t \t return 0; \t} \t else return($ al> $ bl)? +1:-1; }' 我在函数eachcmp中调用该函数。所以我添加了'usort($ ordered,comp($ src,$ sim));'给每个cmp。但它给了我一个错误:usort()[function.usort]:无效的比较函数 – phpheini
你需要给一个回调函数,你给的是一个函数结果。试试'usort($命令,“comp”)'。 – halfdan
但是,这种方式,我不给功能$ a和$ b值。 – phpheini