配列を「ヒット」で並べ替えたいのですが、特定のIDを探してそれを最初の反復として設定し、「ヒット」の並べ替えを続行したいと思います。
たとえば、多次元配列があります。
$myarray = array(
array(
"id"=>10,
"hits"=>80
),
array(
"id"=>14,
"hits"=>50
),
array(
"id"=>15,
"hits"=>700
),
array(
"id"=>18,
"hits"=>200
)
);
idが特定のものであるかどうかをテストしたいと思います。つまり、id == 18の場合は最初に配置し、次にヒットで並べ替えます。usortとカスタム関数を使用してこれを行うにはどうすればよいですか?
私は次のようなものを探していると思います:
function customsort($a,$b){
if($a["id"]==18){ //or b==18?
return -1;
} else {
return $a["hits"]>$b["hits"];
}
}
usort($myarray,"customsort");
私が望む結果は、注文が次のようになることです。
array(
"id"=>18,
"hits"=>200
),
array(
"id"=>14,
"hits"=>50
),
array(
"id"=>10,
"hits"=>80
),
array(
"id"=>15,
"hits"=>700
)
(または、ABCDとラベル付けされている場合は、DBACである必要があります)