-1
フィールドbanner_id(int)でソートしたい。しかし、走っているときに私は奇妙な結果を得る。php usort()が奇妙な結果になる
このusort()の結果は以下の通りである:
101 - 204- 34 - - 69 - 45等
Iを取得しなければならない:
34 - 45 -69〜101〜204
function usort_reorder($a,$b){
$orderby = (!empty($_REQUEST['orderby'])) ? $_REQUEST['orderby'] : 'banner_id';
$order = (!empty($_REQUEST['order'])) ? $_REQUEST['order'] : 'asc';
$result = strcmp($a[$orderby], $b[$orderby]);
return ($order==='asc') ? $result : -$result;
}
usort($data, 'usort_reorder');
このソートを正しく実行するにはどうすればよいですか。最初の数字だけでなく、数字全体をソートすることを意味します。今は最初のものだけが必要です。
「strcmp」は値を数値ではなく文字列として比較します。 – Ryan
ここで私はどのような比較をするべきですか? – Hermants
あなたのフィールド '$ a [$ orderby]'が数字の場合は、単に '$ result = $ a [$ orderby]> $ b [$ orderby];'を使うだけです。 – xander