PHP帮助按其他数组排序数组?异常情况
因此,我从数据库中获取数据,并将每个参数保存到不同的数组中。在这种情况下,我得到的是关于歌曲的数据。我真的不知道如何解释,所以这里有一个例子:PHP帮助按其他数组排序数组?异常情况,php,arrays,sorting,Php,Arrays,Sorting,因此,我从数据库中获取数据,并将每个参数保存到不同的数组中。在这种情况下,我得到的是关于歌曲的数据。我真的不知道如何解释,所以这里有一个例子: $restracks=mysql_query("SELECT * FROM table_name WHERE (tag1='$tag1' OR tag1='$tag2' OR tag1='$tag3' OR tag2='$tag1' OR tag2='$tag2' OR tag2='$tag3' OR tag3='$tag1' OR tag3='
$restracks=mysql_query("SELECT * FROM table_name WHERE (tag1='$tag1' OR tag1='$tag2' OR tag1='$tag3' OR tag2='$tag1' OR tag2='$tag2' OR tag2='$tag3' OR tag3='$tag1' OR tag3='$tag2' OR tag3='$tag3') ORDER BY trackid DESC");;
while ($rowtracks=mysql_fetch_array($restracks)) {
$trackid=$rowtracks['trackid'];
$artistid[$trackid]=$rowtracks['uid'];
$trackname[$trackid]=$rowtracks['trackname'];
$artists[$trackid]=$rowtracks['artists'];
$filename[$trackid]=$rowtracks['filename'];
$dllink[$trackid]=$rowtracks['dllink'];
$tracktag1[$trackid]=$rowtracks['tag1'];
$tracktag2[$trackid]=$rowtracks['tag2'];
$tracktag3[$trackid]=$rowtracks['tag3'];
}
这只是一段代码。然后,我用用户预先指定的标记计算每个曲目(至少1个,最多3个)的标记匹配,如下所示:
//匹配计算器
$match[$trackid]="0";
if (($tag1==$tracktag1[$trackid]) || ($tag1==$tracktag2[$trackid]) || ($tag1==$tracktag3[$trackid])) {
$match[$trackid]=$match[$trackid]+1;
}
if (($tag2==$tracktag1[$trackid]) || ($tag2==$tracktag2[$trackid]) || ($tag2==$tracktag3[$trackid])) {
$match[$trackid]=$match[$trackid]+1;
}
if (($tag3==$tracktag1[$trackid]) || ($tag3==$tracktag2[$trackid]) || ($tag3==$tracktag3[$trackid])) {
$match[$trackid]=$match[$trackid]+1;
}
并以
$tracks[]=$trackid。
然后我使用foreach($trackid作为trackid)来显示它们并添加播放按钮等
但是,我想按标记匹配对它们进行排序,因此首先显示匹配最多的曲目。我知道这可能很难理解,而且相当混乱,但如果有人这样做,请帮助:/
非常感谢 如果有两个数组,一个包含轨迹的总匹配项,另一个包含轨迹本身,则可以使用
array\u multisort()
根据其他数组对一个数组进行排序
大概是这样的:
$tagCount = array(
1234 => 1,
3456 => 3,
5566 => 2
);
$tracks = array(
1234 => array('name' => 'Track1', ...),
3456 => array('name' => 'Track2', ...),
5566 => array('name' => 'Track3', ...),
);
array_multisort($tagCount, SORT_DESC, $tracks);
因此,在$tracks
数组中,您将按以下顺序获得曲目:
3456, 5566, 1234
请注意,当两个或多个磁道的标记计数值相同时,它们将根据第二个数组中的值进行排序,因此如果需要,最好提供“第二级”排序选项,例如array\u multisort(