我的网站上有一些文章有很多不同的标签。目前我只对这4个标签感兴趣:
Dog
Camel
Bear
Cat
如果一篇文章有这些标签中的任何一个,我想显示它。如果一篇论文有两个或更多这样的标签,我想返回位于顶部的那个标签。例如,如果一篇文章同时带有Bear和Cat标签,则应返回Bear。
到目前为止我的代码:
function determine_tag($tags) {
$weights = array(
'Dog',
'Camel',
'Bear',
'Cat'
);
$matches = array();
foreach($tags as $tag) {
if(in_array($tag, $weights)) {
$matches[] = $tag;
}
}
var_dump($matches); // returns array (Cat, Dog)
}
$tags = array('Cat', 'Floating', 'Dog', 'lol', 'Article');
echo determine_tag($tags);
我认为它的效率不是很高,而且它只返回匹配的标签,而不仅仅返回权重最高的标签。如何做到这一点?
$tag = array_shift(array_intersect($weights, $tags));
我会使用array_incross,然后只查看匹配数组中的第一个值。像这样:
function determine_tag($tags) {
$weights = array(
'Dog',
'Camel',
'Bear',
'Cat'
);
$matches = array_intersect($weights, $tags);
if (count($matches) > 0) {
$top_match = $matches[0];
}
}