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